本文以pycharm远程调试devstack安装的allinone openstack环境为例.
配置pycharm:
Run->Edit Configurations-> "+":
local hostname:为你pycharm所在机器的IP地址.
Port: 任意选择一个没有被占用的端口地址.
Path mappings: 这个必须要配置,注意代码路径要一一对应,否则在调试的时候断点处无法停下来,而且会报如下相关的错误:
拷贝pycharm安装目录中的egg文件至需要被调试的远端机器.
python2.X ==> pycharm-debug.egg
python3.X ==> pycharm-debug-py3k.egg
在被调试的远端机器,安装刚拷贝的egg文件:
easy_install pycharm-debug.egg
接着配置pycharm的deployment,它的好处主要在于我们在pycharm中修改了本地代码后,为了保持和远程被调试机器上的代码一直,无需到远程机器上去编辑,通过pycharm可一键同步.
Tools->Deployment->Configuration:
添加一个配置,如下图所示:
然后配置相应的代码映射路径:
然后就可以Tools->Deployment->Upload to devstack进行代码同步了.
pycharm的配置就到此结束了.因为pycharm单线程调试的特性,需要修改eventlet的monkey_patch参数,修改成eventlet.monkey_patch(os=False, thread=False).
在需要调试的入口处添加如下代码:
import pydevd
pydevd.settrace('10.12.32.86', port=11111, stdoutToServer=True, stderrToServer=True)
这在上面配置remote debugger的时候就有.开启
pycharm调试模式,
然后重启openstack 组件服务,程序就会在断点出停下来了.