最新消息:

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

python admin 6384浏览 0评论

此前文章《最简单方法远程调试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多进程子程序

您必须 登录 才能发表评论!