如何在输入时调试Python代码?
我正在用pdb调试Python代码。这个代码需要从标准输入(stdin)获取输入,比如:
python -m pdb foo.py < bar.in
然后pdb会把bar.in当作命令来处理。请问怎么告诉pdb,这些输入是给foo.py的,而不是给pdb本身的呢?
2 个回答
1
一种比较笨的方法是在 bar.in
的开头加上 cont
:
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)
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
,然后正常给它输入bar.in。
python foo.py < bar.in