每当我需要在代码中设置断点时,我都会使用ipdb.set_trace()
。现在,我正在尝试在我使用multiprocessing
创建的进程中使用它,而代码确实停止,我无法输入任何内容来继续调试。有没有办法让stdin
正确定向?
理想情况下,我想设想每次分叉进程停止进行调试时都会打开一个新的控制台,但是我不认为这是可能的。
答案 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会有一些有趣的想法(这里包括的时间太长了)。