有没有办法调试在 `multiprocessing.Process` 上运行的 Python 代码?
我想要的是能够逐步调试在一个独立进程中运行的代码,这个代码是用multiprocessing
这个包写的。
我记得大约一年前我也在找这个解决方案,但没找到。当时有人告诉我只要多做一些日志记录,但这显然不是个好办法。那么,也许在这段时间里,有人想出了什么解决方案?比如,有没有什么方法可以让新创建的进程和调试器连接起来?
3 个回答
0
与其通过进程来启动你的函数或类,不如直接调用它,然后像平常一样进行调试。
1
你可以手动开始这个过程,自己去调试,而不是通过这个过程的接口来操作。
1
你可能会觉得 WingIDE 很有用。它的调试工具非常好用,甚至可以支持远程调试,只需要对要调试的代码做一些简单的修改。虽然它不是免费的,但我觉得花这个钱是值得的。(我和Wingware没有任何关系,只是一个满意的用户…)
要在Wing中启用远程调试,你需要把文件 wingdbstub.py
复制到你想调试的应用程序的同一个文件夹里,然后在你代码中想要开始调试的地方导入它。(这个在 WingIDE文档中有详细说明。)
如果你拿 这个例子,并把 myfunc()
方法修改成如下形式:
def myfunc(conn, commands):
import wingdbstub
# ... remainder same as original example
你应该可以启动WingIDE,在 import
这一行后面设置一个断点,然后从控制台运行这个示例脚本。它应该会自动连接到Wing,并在你的断点处暂停。
如果你在连接调试时遇到问题,可以参考 这篇帖子,可能会对你有帮助。(WingIDE的文档也对连接问题进行了不错的说明。)