有没有办法调试在`multiprocessing.Process`上运行的Python代码?

时间:2010-11-28 18:26:14

标签: python debugging multiprocessing

我希望能够使用multiprocessing包逐步调试在单独进程中运行的代码。

我记得大约一年前寻找解决方案而没找到解决方案。我被告知要做很多伐木,但当然这是一种劣质的方法。那么也许有人在此期间提出了解决方案?例如,某些使新生成的进程与调试器连接的机制?

3 个答案:

答案 0 :(得分:1)

您可以启动该过程您需要手动调试,而无需在此过程中使用Process界面。

答案 1 :(得分:1)

您可能会发现WingIDE有用。它的调试器非常好,它甚至支持调试远程进程,并对正在调试的代码进行一些最小的检测。它不是免费的,但非常值得花费,恕我直言。 (我不以任何方式与Wingware有关联,只是满意的客户......)

要在Wing中启用远程调试,您需要将文件wingdbstub.py复制到与要调试的应用程序相同的目录,并将其导入到您希望调试开始的代码中的位置。 (这在WingIDE docs中已经相当详尽。)

如果您执行this example并修改myfunc()方法,则如下所示:

def myfunc(conn, commands):
    import wingdbstub
    # ... remainder same as original example

您应该能够启动WingIDE,在import行之后立即设置断点,然后从控制台启动示例脚本。它应该自动连接到Wing并在断点处停止。

如果您在调试连接工作时遇到任何问题,您可能会发现this post很有帮助。 (WingIDE文档也可以很好地解决连接问题。)

答案 2 :(得分:0)

不是通过Process启动你的函数或类,而是直接调用它并像平常那样进行调试。