PDB远程调试Python多进程子程序

此前文章《最简单方法远程调试Python多进程子程序》利用了Unix管道文件以及简单的bash来配合调试多进程子程序,但也因此没法跨平台支持windows下的子进程调试,这次简单使用socket接口写了个模块,利用类文件对象传给Pdb的构造,因此不仅可以跨平台,甚至跨机器,跨网络调试都没问题(通常不会这么BT的)。

使用方法,用回之前的例子:

先在终端运行调试服务端:

python -c "import rm_pdb; rm_pdb.server()"

在另外的终端运行这个文件:
multiproces_debug.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/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
文章分类 Programming, Python 标签: , , , , ,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*