Несоответствие Python PDB с выходными данными команды — следующий оператор не выводится

Я пытаюсь выполнить скрипт Python для некоторого кода, который я написал более года назад. Насколько я помню, когда вы пишете строку pdb.set_trace(), программа останавливает свое выполнение в этой точке и печатает следующую строку, которая будет выполнена. Ввод «n» или «s» продвинет выполнение на строку (и, возможно, перейдет к функции, не слишком актуальной для моей проблемы) И напечатает следующую строку для повторного выполнения.

Теперь у меня есть одна программа «example1.py», и она не печатает следующий оператор для выполнения. Я просто получаю вывод, подобный следующему

 ./example1.py
 > /home/some/example1.py(44)create()
 (Pdb) s
 > /home/some/example1.py(45)create()
 (Pdb) s
 --Call--
 > /home/some/example1.py(90)parse()

Но когда я пытаюсь сделать то же самое с другой программой на Python, «example2.py», которую я написал совсем недавно, я получаю ожидаемый результат (следующий оператор, который нужно выполнить).

> /home/some/example2.py(86)random_update()
-> DATE_LIMIT=1
(Pdb) n
> /home/some/example2.py(87)random_update()
-> FILE_LIMIT=120
(Pdb) n
> /home/some/example2.py(89)random_update()
-> n_dates=0

Я понятия не имею, что может быть возможной причиной этого. Могут ли операторы импорта мешать выполнению pdb?

ОБНОВЛЕНИЕ: поэтому я установил точку останова трассировки перед переходом в каталог, который находится за пределами моего домашнего каталога. Когда я это делаю, я получаю ожидаемый результат. Я заметил, что владельцем группы этого каталога был root, поэтому я изменил его на своего пользователя. Это не решило мою проблему, но теперь я знаю, что это связано с местом выполнения программы.


person pickle    schedule 11.05.2016    source источник


Ответы (1)


Я понял. Если я устанавливаю свою трассировку перед строкой, которая изменяет текущий каталог на каталог, в котором программа не находится, я получаю ожидаемый результат. Как только я установил трассировку после этого изменения каталога, я больше не получал вывод выполнения оператора.

Чтобы решить эту проблему, я выполнил программу с полным путем

python /home/name/home/some/example1.py
person pickle    schedule 11.05.2016