二、配置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文件来实现
1
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
4
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 = [
7
(r
'/opt/stack/a/nova'
,
8
r
'/opt/stack/nova'
)
9
]
导入本地/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
2
import
eventlet
3
from
nova
import
debugger
4
if
debugger.enabled():
5
6
eventlet.monkey_patch(os
=
False
, thread
=
False
)
7
else
:
8
eventlet.monkey_patch(os
=
False
)
设置断点
01
stack@yxb
-
devstack:~
/
nova$ vim nova
/
compute
/
api.py
02
@check_instance_lock
03
@check_instance_host
04
@check_instance_cell
05
@check_instance_state(vm_state
=
[vm_states.ACTIVE, vm_states.ERROR])
06
def
stop(
self
, context, instance, do_cast
=
True
, clean_shutdown
=
True
):
07
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)
10
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)