лучший способ иметь дело с Python pdb облупленность re/stdout?

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

Часто эта проблема является тонкой, заставляя меня думать, что программа зависает, когда она действительно ожидает входа.

Как люди работают вокруг этого? (К сожалению, использование других отладчиков как winpdb не является опцией).

5
задан Martijn Pieters 30 March 2015 в 10:39
поделиться

2 ответа

Если вы вызываете pdb в коде, вы можете передать свой собственный стандартный вывод в конструктор. sys .__ stdout __ может быть хорошим выбором.

Если вы вызываете pdb из командной строки, вы можете скопировать функцию main () из pdb.py в свой собственный sane_pdb .py. Затем измените инициализацию Pdb () на:

pdb = Pdb(stdout=sys.__stdout__)

Затем вы можете вызвать sane_pdb.py вместо pdb.py. Ничего удивительного, что вам придется скопировать 40 строк в свой файл, чтобы изменить одну из них, но это вариант.

2
ответ дан 13 December 2019 в 22:09
поделиться

Этот ответ просто дополняет ответ 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()

Не знаю, работает ли она на самом деле для проблемы вопросителя, но она делает то, что описал Нед...

.
5
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: