如何将 Python pdb.set_trace() 与重新分配的 sys.stdout 一起使用



我想通过命令过滤 Python 脚本的输出,同时能够正常使用pdb.set_trace()

我运行这个脚本:

#!/usr/bin/python
import sys, os, pdb
print "first line"
sys.stdout = os.popen('./filter', 'w')
#pdb.set_trace()
print "second line"
print "third line"  

filter脚本是这样的:

#!/usr/bin/python
import subprocess, sys
subprocess.call( 'cat', stdout=sys.stdout, stderr=sys.stderr, shell=True )

一切正常,我在终端上看到了输出。 但是,当我取消注释set_trace行时,现在,调试器显然中断了,我可以使用命令,但我看不到它们的输出(直到整个程序存在),因此交互式调试被破坏了。

如何更改filter以使交互式调试正常工作?

您可以尝试创建自己的Pdb实例。 例如。

mypdb = pdb.Pdb(stdout=sys.__stdout__)

最新更新