此前文章《最简单方法远程调试Python多进程子程序》利用了Unix管道文件以及简单的bash来配合调试多进程子程序,但也因此没法跨平台支持windows下的子进程调试,这次简单使用socket接口写了个模块,利用类文件对象传给Pdb的构造,因此不仅可以跨平台,甚至跨机器,跨网络调试都没问题(通常不会这么BT的)。
使用方法,用回之前的例子:
先在终端运行调试服务端:
python -c "import rm_pdb; rm_pdb.server()"
在另外的终端运行这个文件:
multiproces_debug.py
#!/usr/bin/python import multiprocessing import pdb import rm_pdb def child_process(): print "Child-Process" rm_pdb.pdb().set_trace() var = "debug me!" def main_process(): print "Parent-Process" p = multiprocessing.Process(target = child_process) p.start() pdb.set_trace() var = "debug me!" p.join() if __name__ == "__main__": main_process()
完成,即可同时调试父子进程。另外pdb()和server()是可以接受addr、port参数的,默认用了addr=’localhost’, port=18964地址端口来通讯,如果需要同时调试N多个子进程,或者跨网络调试,需要使调试端跟服务端的参数一致。
模块代码放到Google Code:
http://code.google.com/p/ptcoding/source/browse/trunk/rm_pdb/rm_pdb.py
可直接下载文件放到需要调试的代码同一目录使用,或者使用easy_install直接安装到python模块内(需要svn支持):
easy_install http://ptcoding.googlecode.com/svn/trunk/rm_pdb
转载请注明:爱开源 » PDB远程调试Python多进程子程序