二、配置Pydev debug
配置debug server信息
三、远程调试OpenStack Nova api(nova stop instance的api调用)
1、确保远程运行nova api服务器有pydevd.py,可以从本地安装eclipse的pydev插件目录下找到(不同环境下目录可能有所不同)
然后拷贝到运行nova api服务器的python路径下
1 | ices-MacBook-Air:~ iceyao$ ls -l /Users/iceyao/ .p2 /pool/plugins/org .python.pydev_4.5.4.201601292234 /pysrc/pydevd .py |
2 | -rw-r--r-- 1 iceyao staff 60901 Jan 29 20:32 /Users/iceyao/ .p2 /pool/plugins/org .python.pydev_4.5.4.201601292234 /pysrc/pydevd .py |
2、其次要保证本地eclipse端也有一份相同代码,如果在不同目录,可以使用修改pydevd_file_utils.py文件来实现
2 | ices-MacBook-Air:~ iceyao$ ls -l /Users/iceyao/ .p2 /pool/plugins/org .python.pydev_4.5.4.201601292234 /pysrc/pydevd_file_utils .py |
3 | -rw-r--r-- 1 iceyao staff 14343 Mar 20 14:50 /Users/iceyao/ .p2 /pool/plugins/org .python.pydev_4.5.4.201601292234 /pysrc/pydevd_file_utils .py |
5 | ices-MacBook-Air:~ iceyao$ vim /Users/iceyao/ .p2 /pool/plugins/org .python.pydev_4.5.4.201601292234 /pysrc/pydevd_file_utils .py |
6 | PATHS_FROM_ECLIPSE_TO_PYTHON = [ |
导入本地/opt/stack/a/nova项目
File --> Import --> General --> Existing Projects into Workspace
3、远程运行nova api服务器设置断点
本地eclipse机器开启debug监听
登入远程的devstack环境,进入screen,加上--remote_debug-host 172.16.1.10 --remote_debug-port 12306,重新启动服务
172.16.1.10:本地安装eclipse的机器ip
1 | stack@yxb-devstack: /opt/devstack $ /usr/local/bin/nova-api --remote_debug-host 172.16.1.10 --remote_debug-port 12306 & echo $! > /opt/stack/status/stack/n-api .pid; fg || echo "n-api failed to start" | tee "/opt/stack/status/stack/n-api.failure" |
1 | stack@yxb - devstack:~ / nova$ cat nova / cmd / __init__.py |
3 | from nova import debugger |
6 | eventlet.monkey_patch(os = False , thread = False ) |
8 | eventlet.monkey_patch(os = False ) |
设置断点
01 | stack@yxb - devstack:~ / nova$ vim nova / compute / api.py |
05 | @check_instance_state(vm_state = [vm_states.ACTIVE, vm_states.ERROR]) |
06 | def stop( self , context, instance, do_cast = True , clean_shutdown = True ): |
08 | import pydevd;pydevd.settrace(host = '172.16.1.10' , port = 12306 , stdoutToServer = True , stderrToServer = True ,suspend = True ) |
09 | self .force_stop(context, instance, do_cast, clean_shutdown) |
11 | stack@yxb - devstack:~ / nova$ nova list |
12 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |
13 | | ID | Name | Status | Task State | Power State | Networks | |
14 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |
15 | | c04f9a2f - 36b3 - 4104 - 8c75 - 5461491aca97 | test | ACTIVE | - | Running | public = 2001 :db8:: 3 , 172.24 . 4.3 | |
16 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |
17 | stack@yxb - devstack:~ / nova$ |
18 | stack@yxb - devstack:~ / nova$ nova stop c04f9a2f - 36b3 - 4104 - 8c75 - 5461491aca97 |
本地eclipse机器捕获到,接下来就可以进行调试了
参考链接
http://www.pydev.org/manual_101_install.html (PyDev安装)
http://zhaozhiming.github.io/blog/2014/04/13/python-remote-debug-setting-by-pycharm-and-eclipse-in-ubuntu/
http://blog.csdn.net/tantexian/article/details/47003385
http://blog.csdn.net/quqi99/article/details/18404807
http://yikun.github.io/2016/02/23/%E4%BC%98%E9%9B%85%E5%9C%B0%E8%B0%83%E8%AF%95OpenStack/(PyCharm远程调试OpenStack)