我一直在使用pdb.set_trace()在我的代码中设置一些断点,并且总是很流畅。
我有一个在循环中运行python脚本的shell脚本:
cat $file1 | (
#read something from file1
while ...
do
if ... then
cat $file2 | (
# read something from file2
while ...
do
python test.py
# read something from file2
done)
fi
#read something from file1
done)
假设test.py只是一个简单的hello世界。我把pdb.set_trace()放在我的python脚本中。当我在循环外部运行代码时,只需通过python test.py,一切正常。但是,当我执行.sh脚本时,它到达pdb.set_trace()的那一刻,它会引发一个BdbQuit和我的python脚本。
我无法意识到问题所在。如果有人能帮我解决这个问题,我真的很感激。
谢谢。
答案 0 :(得分:1)
您正在while
循环中重定向 stdin :
cat $file1 | while ...
交互式pdb提示也会从 stdin 读取,但由于它已被重定向,所以它只是从该文件中获取输入。
在这种情况下,最简单的解决方案就是使用类似remote-pdb的内容,这会打开一个网络连接,您可以使用以下方式连接到该网络连接。 telnet
或nc
。