Как pdb код Python с вводом? - PullRequest
6 голосов
/ 04 мая 2010

Я отлаживаю код Python с помощью pdb.Код должен вводиться из stdin, например:

python -m pdb foo.py < bar.in

Тогда pdb примет bar.in в качестве команд.Как сказать pdb, что ввод для foo.py, а не для pdb?

Ответы [ 2 ]

3 голосов
/ 08 мая 2010

Ну, это твик к ответу Аарона, но я думаю, что он упускает тот момент, когда вы хотите интерактивно отлаживать в какой-то момент, верно? Это работает, но программа закрывается, прежде чем вы получите возможность отладки.

(echo cont;cat bar.in) | python -m pdb foo.py

Я думаю, что если вы можете отредактировать foo.py, выполните import pdb, затем в интересном месте в foo.py сделайте pdb.set_trace(), и просто запустите python foo.py без -m pdb и передайте ему bar.in нормально

python foo.py < bar.in
1 голос
/ 04 мая 2010

Вид грубого обходного пути - поставить cont в начале bar.in:

cont
one
two
three
four


aaron@ares ~$ python -m pdb cat.py < bar.in 
> ~/cat.py(1)<module>()
-> import sys
(Pdb) one
two
three
four
The program finished and will be restarted
> ~/cat.py(1)<module>()
-> import sys
(Pdb) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...