23

ipdb.set_trace()每当我需要在我的代码中设置断点时,我都会使用它。现在,我正在尝试在使用 创建的进程中使用它multiprocessing,虽然代码确实停止了,但我无法输入任何内容来继续调试。有什么办法可以让我得到stdin正确的指导吗?

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

4

2 回答 2

12

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

稍后(在修复错误之后......)您可以切换回多处理

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

于 2016-02-14T21:19:03.130 回答
3

根据如何将调试器附加到 python 子进程?, http://winpdb.org支持multiprocessing调试。

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

于 2016-02-19T07:02:18.870 回答