如何在分叉进程中使用ipdb.set_trace

时间:2014-10-09 22:43:41

标签: python multiprocessing ipython pdb ipdb

每当我需要在代码中设置断点时,我都会使用ipdb.set_trace()。现在,我正在尝试在我使用multiprocessing创建的进程中使用它,而代码确实停止,我无法输入任何内容来继续调试。有没有办法让stdin正确定向?

理想情况下,我想设想每次分叉进程停止进行调试时都会打开一个新的控制台,但是我不认为这是可能的。

2 个答案:

答案 0 :(得分:9)

有时用于调试您可以更改代码以使用 multiprocessing.dummy 。这样,不会执行fork,它将与线程一起使用并且更容易调试。

稍后(在错误被压扁之后......)你可以切换回多处理

multiprocessing.dummy - 应提供与多处理相同的API,以便轻松更改......

答案 1 :(得分:3)

根据How to attach debugger to a python subproccess?http://winpdb.org支持multiprocessing调试。

如果你更喜欢做更多的工作以获得更大的灵活性,那么https://gist.github.com/csabahenk/6497709会有一些有趣的想法(这里包括的时间太长了)。