Я программист Perl, изучающий Python. Я пишу свой код в отладке emacs с помощью python -m pdb script.py
с использованием Python 2.7.3.
Я хотел бы знать, что представляет собой эквивалент python в Perl, добавляющий $DB::single=1;1;
к определенной строке кода python, так что при запуске отладчика он остановится там, даже если это другой файл исходного кода, откуда начало выполнения (например, строка кода в библиотеке, используемая script.py
).
Любые идеи?
EDITED: после просмотра pdb.set_trace()
или ipdb.set_trace()
, я считаю их хорошими решениями, но не на 100% идентичными поведению $DB::single=1;1;
. Это, я бы хотел, чтобы точка останова была на линии set_trace, а не на следующей строке. Это выполняется в Perl's $DB::single=1;
путем добавления другого оператора в той же строке: 1;
, что делает его $DB::single=1;1;
.
Используя set_trace()
, я получаю точку останова в строке после утверждения, даже если я добавлю после этого 1;
. Все еще не полностью понимает, как Python рассматривает строки с несколькими операторами по сравнению с Perl.
Кто-нибудь?
Любые идеи?
Привет, вы пытались установить точку останова с помощью 'C-x SPACE' (в буфере python), обратите внимание, что вам нужно будет работать pdb для этого. –
Почему имеет значение, что точка останова находится на следующей строке? Почему функциональность должна быть идентичной функции Perl? – jpkotta
jpkotta, он косметический, но я хочу статическую точку останова, которая фактически заставляет отладчик останавливаться там, а не на следующем утверждении. Например, если у вас есть комментарии на 1000 строк до следующего утверждения, расстояние между точкой останова и следующим утверждением раздражает. – 719016