![7BD67320-842F-4622-BB2D-0BD21721F427.png wKioL1buWELgJBzEAAFe7b24DYM749.png](http://itongblognew.qiniudn.com/img/1458471005498.png)
二、配置Pydev debug
![8E499721-4427-4382-A652-9A75B4C353CA.png wKioL1buW0eiDklEAACzsGCMUg8427.png](http://itongblognew.qiniudn.com/img/1458471005979.png)
![94957A37-A413-4A7F-91C6-75F0F2DE80FE.png wKiom1buW3jjvFffAAEqRJYrOD8592.png](http://itongblognew.qiniudn.com/img/1458471006382.png)
![0AC8B033-3ADE-4BA8-9449-8E841C4AFC53.png wKiom1buXW6DJpDPAACiXMuiE4g651.png](http://itongblognew.qiniudn.com/img/1458471006863.png)
![744162A4-9193-4557-8B02-21CBE4D3286A.png wKioL1buXqGyudGiAADPl1oqaaE128.png](http://itongblognew.qiniudn.com/img/1458471007253.png)
![B2D80AB0-1C7B-4CC6-A749-267343CFED73.png wKiom1buXg6T5ns_AABou3P4s0w638.png](http://itongblognew.qiniudn.com/img/1458471007657.png)
![21E820F3-EF43-4CAD-A0B6-2D5A687758F4.png wKioL1buXvCAuZeUAAEk_nPG8_g006.png](http://itongblognew.qiniudn.com/img/1458471008137.png)
配置debug server信息
![87D6ADE9-0296-4860-B7F6-FC4EE59F3E51.png wKiom1buYL7CFf3qAAGn-OYR-VQ680.png](http://itongblognew.qiniudn.com/img/1458471008617.png)
三、远程调试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
![A2E7CBF2-4652-4A69-BB14-0AB4969C585D.png wKioL1buZ3vD4PYRAADKu5hDBuk793.png](http://itongblognew.qiniudn.com/img/1458471009183.png)
![CA6EF5D1-D805-41E5-8963-65CCE091DD41.png wKiom1buZ6jARGwrAAEMugTE53c702.png](http://itongblognew.qiniudn.com/img/1458471009627.png)
3、远程运行nova api服务器设置断点
本地eclipse机器开启debug监听
![DC30B0B3-CAF5-41DD-9079-659469922C54.png wKiom1buatuD4BvEAACrAVOiwwo636.png](http://itongblognew.qiniudn.com/img/1458471010045.png)
![90759640-E822-423D-947B-78313138CB50.png wKiom1buaxLhUuj-AAEi3AG6HR4691.png](http://itongblognew.qiniudn.com/img/1458471010506.png)
登入远程的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机器捕获到,接下来就可以进行调试了
![CAAF737F-B4E6-4CBE-B509-7AAE55975AB0.png wKioL1bubU-y82CqAANMOpWVTz8148.png](http://itongblognew.qiniudn.com/img/1458471011637.png)
参考链接
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)