【OpenStack】使用Komodo远程调试python(OpenStack)

本blog欢迎转发,但请保留原作者信息:
新浪微博:@孔令贤HW  
Blog地址:http://blog.csdn.net/lynn_kong
内容系本人学习、研究和总结,如有雷同,实属荣幸!

1      环境配置

windows 主机:32位操作系统win7,IP地址182.168.14.128

Linux主机:32位操作系统Ubuntu 12.04.1 LTS,IP地址182.168.61.24

2      本地配置

在本地机器安装Komodo IDE7.1(当然python是必须安装的),打开komodo,依次打开”Edit”-->”Preferences”,找到”Languages”下的Python,本机安装的python会自动出现在右侧的解释器配置中,以下是我的配置:

【OpenStack】使用Komodo远程调试python(OpenStack)_第1张图片 

选中”Debug”菜单下的” Listen for Debugger Connections”

同时,记录”Debug”菜单下的”Listener Status”下的Host Port,这是本地主机的监听端口。

3      远程配置

配置步骤:

1)     安装python

2)     下载PythonRemoteDebuggingClient(http://code.activestate.com/komodo/remotedebugging/),我下载的是Komodo-PythonRemoteDebugging-7.1.3-74661-linux-x86.tar.gz

3)     解压到当前目录

root@controller:/usr/kong# tar -zxvf Komodo-PythonRemoteDebugging-7.1.3-74661-linux-x86.tar.gz

解压后的目录结构如下:

【OpenStack】使用Komodo远程调试python(OpenStack)_第2张图片

4)     将dbgp目录(注意是整个目录,而不是目录下的文件)加入python路径或直接拷贝到python路径,我用的第二种方法,拷贝到/usr/lib/python2.7/dist-packages目录下。python路径的查看方法:

【OpenStack】使用Komodo远程调试python(OpenStack)_第3张图片

5)     验证是否正确。

在shell中输入:python -c "import dbgp.client; print 'ok'"

输出OK表示配置成功。

4      远程调试

4.1    方法一

1)     在远程主机上,将bin目录下pydbgp文件拷贝到一个方便的目录,该文件是启动远程调试的主脚本。

2)     开启调试。执行命令:

python -S path/to/pydbgp.py -d localhost:port your-script.py

 

path/to/pydbgp.py:pydbgp文件在远程主机的位置

localhost:本地主机的IP

port:本地主机的监听端口(即:”Debug”菜单下的”Listener Status”下的Host Port)

your-script.py:在远程主机上的被调试的python脚本

3)     执行后,本地主机的Komodo会捕获到调试信号。

4.2    方法二

对于大型、多进程工程,我觉得还是该方法比较灵活。以调试Nova功能nova list命令为例。

1)     修改nova/compute/api.py文件,首先引入依赖模块:

from dbgp.client import brk

因为我们要调试的是nova list命令,所以在该文件API类的get_all方法中加入如下红框内一句,注意填写正确的IP和端口:

【OpenStack】使用Komodo远程调试python(OpenStack)_第4张图片

2)     重新编译api.py文件,将api.py和api.pyc替换对应位置的文件(替换方法参考我之前的博客)

3)     重启nova服务。

4)     确保本地主机上的Komodo处于运行,在远程主机执行nova list,此时,本地主机的Komodo会捕获到调试信号,然后就可以进行单步跟踪了,效果如下图:

【OpenStack】使用Komodo远程调试python(OpenStack)_第5张图片

本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

你可能感兴趣的:(debug,openstack,nova,Komodo)