如何调试分叉的Python脚本
在Perl的调试工具里,我可以用DB::get_fork_TTY()来在不同的终端中调试父进程和子进程。那在Python的调试工具里有没有类似的功能呢?或者,有没有什么好的方法可以在Python中调试进程分叉的情况?
5 个回答
0
调试一个分叉(fork)进程的一个可能方法是,在主进程上使用pdb,而在分叉的进程上使用winpdb。你可以在分叉过程的早期设置一个软件断点,然后在断点被触发后连接winpdb应用。
也许可以在winpdb下运行程序,并在分叉后再连接另一个实例——我还没有尝试过这个。不过,你肯定不能同时连接两个winpdb实例,我试过,结果失败了。如果这个方法能成功,那就更好了,因为pdb 真的很糟糕。
1
在pyCharm中,调试器的功能非常好用。它似乎是通过使用带有Python支持的gdb来实现这个功能的。不过,我找到的关于如何手动使用gdb的教程都没有成功。在pyCharm里,一切都能顺利进行。
3
如果你想模拟一个分叉的进程,可以把原本用来分叉的代码替换成一个总是返回真的条件(也就是pid == 0)。这样的话,调试主进程的时候,调试工具就能正常工作。
如果你想调试多个进程之间的互动,我觉得使用详细的日志记录会更好。