我正在尝试调试我编写的Python命令行界面,它可以从stdin获取它的参数。一个简单的测试案例会产生以下输出:
echo "test" | python mytool.py
等价于输出结果为
python mytool.py test
我想调试一些这个工具的问题,所以我尝试运行了这个命令:
echo "test" | pdb mytool.py
但我得到了这个输出,然后pdb退出:
> /path/to/mytool.py(5)<module>()
-> '''
(Pdb) *** NameError: name 'test' is not defined
(Pdb)
如果我在shebang中添加-m python
,或者在脚本中运行pdb.set_trace()
,也会发生同样的事情。
这里到底发生了什么?
sys.stdin
吗?此外,您是想为此编写一个测试还是需要在脚本内启动调试器?如果您需要调试器,在哪个时点要让它参与脚本?抱歉,我对问题有点不清楚。 - famousgarkinsys.stdin
)的脚本中启动调试器。我宁愿不拆开脚本并使其接受文件输入,因为我正在测试确定脚本是否读取stdin的逻辑。实际上,我只是尝试做我在问题中描述的事情,而PDB抛出的错误对我来说没有多大意义。 - whereswalden