使用 pdb 调试子进程?

use*_*847 5 python debugging subprocess pdb

我有一些 python 代码,其中多次调用子进程(例如,subprocess.check_call())。它显然无法调试到子进程。

有什么方法(例如添加代码)可以做到这一点,或者我必须使用不同的调试器?

use*_*847 8

事实证明,障碍是调用子进程的代码也重定向了标准输出:

subprocess.call(["called_program",
     "-q", num_processes,
     "-k", yaml_key],
    stdout=logfile,
    stderr=subprocess.STDOUT)
Run Code Online (Sandbox Code Playgroud)

根据 tdelaney 的评论,我删除了重定向并在called_program.py. 现在我可以在该模块中使用 pdb。


Sar*_*nan 0

如果您有 pdb,则必须单步执行代码。如果您有源文件,请在您感兴趣的行中留下一个断点,并使用 pdb 自动停止在您感兴趣的行处。

这就是我们在 .net 中所做的。希望它也适用于 python..

  • 那将是“pdb.set_trace()”,但只有当 OP 不重定向标准输出时它才会起作用。 (3认同)