本文讲解openstack的两个调试工具:pycharm、komodo(以对openstack的nova api远程调试为例)


注:后续有时间再对eclipse进行讲解。


一:komodo(官方文档:http://docs.activestate.com/komodo/6.0/debugpython.html)


1、配置python解释器:(”Edit”-->”Preferences”)


选择python:




openstack无法进入控制台 openstack debug_python



2、先保证komodo的Debug菜单的Listen for debuging connections是勾选上的:



openstack无法进入控制台 openstack debug_openstack无法进入控制台_02



3、打开上面菜单的最后一项Listener Status选项卡:



openstack无法进入控制台 openstack debug_python_03


此处的9000为之后要用的远程连接端口。


也可以自定义端口:



openstack无法进入控制台 openstack debug_python_04



4、远程linux配置:


下载PythonRemoteDebuggingClient(http://code.activestate.com/komodo/remotedebugging/),

本次试验下载版本为:

(wget http://downloads.activestate.com/Komodo/releases/8.5.3/remotedebugging/Komodo-PythonRemoteDebugging-8.5.3-83298-linux-x86_64.tar.gz


openstack无法进入控制台 openstack debug_openstack无法进入控制台_05

3)     解压到当前目录

解压后文件夹为:


openstack无法进入控制台 openstack debug_linux_06

查看komodo的debug插件结构:



openstack无法进入控制台 openstack debug_openstack无法进入控制台_07



5、确认安装了log模块:



openstack无法进入控制台 openstack debug_python_08



6、将pythonlib/dbgp服务到python的安装目录下:  


cp -r pythonlib/dbgp /usr/lib/python2.6/site-packages/


注:python2.6是版本


注:如果要在虚拟环境下运行,则拷贝到虚拟环境下的路径,如/usr/share/openstack-dashboard/virtEnv/lib/python2.7



7、执行命令检查包是否导入正确:



openstack无法进入控制台 openstack debug_linux_09




8、将pydbgp文件拷贝到/usr/bin目录下,执行pydbgp --help命令:


cp pydbgp /usr/bin/



openstack无法进入控制台 openstack debug_openstack无法进入控制台_10



iptables -I INPUT -p tcp --dport 8001 -j ACCEPT -m comment --comment "MCL"



9、远程调试:


方法一:


vim testPython.py



openstack无法进入控制台 openstack debug_远程调试_11



执行命令:


pydbgp -d 192.168.1.133:9000 testPython.py


其中192.168.1.133为komodo对应的windows的ip地址,9000为3中查看的监听端口。



此时可以看到komodo IDE:



openstack无法进入控制台 openstack debug_python_12



openstack无法进入控制台 openstack debug_linux_13


linux远程代码被下载到komode,接下来可以进行远程调试。



方法二:


在需要远程调试的代码中添加如下代码:



from dbgp.client import brk


brk(host="192.168.1.133", port=9000)



openstack的nova api调试为例:


vim /usr/lib/python2.6/site-packages/nova/compute/api.py



openstack无法进入控制台 openstack debug_openstack无法进入控制台_14


增加代码:



openstack无法进入控制台 openstack debug_linux_15



重启服务。


在页面点击instance或者linux执行命令nova list则komodo监听到远程debug连接:



openstack无法进入控制台 openstack debug_python_16




是否选择代码mapper自己选择。本处选择no:


则komodo自动将远程的代码下载到本地:



openstack无法进入控制台 openstack debug_openstack无法进入控制台_17


接下来则可以进行调试。