Если у меня есть программа где stdout
перенаправляется, мои подсказки pdb, все переходят к перенаправлению, потому что библиотека была записана для записи в stdout
.
Часто эта проблема является тонкой, заставляя меня думать, что программа зависает, когда она действительно ожидает входа.
Как люди работают вокруг этого? (К сожалению, использование других отладчиков как winpdb не является опцией).
Если вы вызываете pdb в коде, вы можете передать свой собственный стандартный вывод в конструктор. sys .__ stdout __
может быть хорошим выбором.
Если вы вызываете pdb из командной строки, вы можете скопировать функцию main ()
из pdb.py в свой собственный sane_pdb .py. Затем измените инициализацию Pdb () на:
pdb = Pdb(stdout=sys.__stdout__)
Затем вы можете вызвать sane_pdb.py вместо pdb.py. Ничего удивительного, что вам придется скопировать 40 строк в свой файл, чтобы изменить одну из них, но это вариант.
Этот ответ просто дополняет ответ Ned'а, как способ обернуть pdb. py main()
функция, которая не требует копирования 40 строк только для того, чтобы изменить одну из них:
# sane_pdb.py: launch Pdb with stdout on original
import sys, pdb
def fixed_pdb(Pdb=pdb.Pdb):
'''make Pdb() tied to original stdout'''
return Pdb(stdout=sys.__stdout__)
if __name__ == '__main__':
pdb.Pdb = fixed_pdb
pdb.main()
Не знаю, работает ли она на самом деле для проблемы вопросителя, но она делает то, что описал Нед...
.