我正在使用pdb调试Python代码。 代码需要从stdin输入,如:
python -m pdb foo.py < bar.in
然后pdb将接受bar.in作为命令。 如何告诉pdb输入是用于foo.py而不是用于pdb?
答案 0 :(得分:3)
嗯,这是对Aaron答案的调整,但我认为它错过了你想在某个时候进行交互式调试的重点,对吧?这有效,但程序会在你有机会调试之前退出。
(echo cont;cat bar.in) | python -m pdb foo.py
我认为如果您可以修改foo.py,请执行import pdb
然后在foo.py的有趣位置执行pdb.set_trace()
,然后只运行python foo.py
而不使用-m pdb
并给它吧。通常
python foo.py < bar.in
答案 1 :(得分:1)
一种重要的工作是将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)