pdb.set_trace () останавливается в правильном месте, но не отображает никакой полезной информации - PullRequest
0 голосов
/ 15 октября 2019

Я отлаживаю скрипт, который имеет много зависимостей. Я установил точку останова в 1 файле, чтобы, когда скрипт попадал в эту строку, он приостанавливал работу программы, и я мог проходить через класс pdb в python. Когда скрипт запускается, он правильно останавливает программу в правой строке в моей командной строке, однако он вообще не показывает никакой информации. Я пытаюсь напечатать переменную, которая находится в области видимости, и она ничего не возвращает на консоль. Если я наберу n (для следующего) и нажму Enter, он даже не напечатает следующую строку, на которую пошел. Я не могу получить никакой информации вообще. Вот пример ... ПРИМЕЧАНИЕ. Проверка переменных находится в локальной области, где в сценарии находится точка останова.

(Pdb) print(testing)
(Pdb)
(Pdb) n
(Pdb) n
(Pdb)
(Pdb)

Обычно, когда я нажимаю n во время отладки, он показываетследующая строка, которая будет выполнена, но вместо этого она не показывает ничего, как показано выше.

Я знаю, что не предоставляю много кода информации, поэтому я надеюсь, что это достаточно информации для понимания.

Итак, есть ли конкретные случаи, когда отладчик python не будет отображать какую-либо информацию, подобную этому? Почему это происходит?

1 Ответ

0 голосов
/ 15 октября 2019

После дальнейших исследований я обнаружил, что где-то в сценарии stdout берется и перезаписывается по неизвестным мне причинам. Если у вас есть аналогичная проблема с pdb, не печатающим на консоль, вы можете сделать ...

import sys
sys.stdout.write("TESTING")

Если это не возвращает «TESTING» на консоль, тогда stdout перезаписывается где-то в вашем скрипте.

...