openstack远程调试 - eclipse + pydev



转自












http://www.pydev.org/manual_adv_remote_debugger.html











源调试代码中加入远程debug代码:

1、将安装有pydev插件的eclipse的文件夹搜索到 pydevd.py文件,复制到目标主机的python路径下。

eclipse/plugins/org.Python.pydev_x.x.x/pysrc/pydevd.py 







vim /usr/lib/python2.7/site-packages/pysrc.pth

测试import pydevd

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

此处发现eclipse并没有进入到get_all 断点调试的代码处,而是保存没有改pid进程,这是因为nova底层代码
使用的eventlet多线程(协程)导致,解决此问题参考如下:
grep -rn 'eventlet.monkey_patch' /usr/lib/python2.6/site-packages/nova
   
   
vim /usr/lib/python2.6/site-packages/nova/cmd/__init__.py
   
   

import eventlet
from nova import debugger
if debugger.enabled():
   # turn off thread patching to enable the remote debugger
   eventlet.monkey_patch(os=False, thread=False)
else:
   eventlet.monkey_patch(os=False)
替换为:
import eventlet
from nova import debugger
if debugger.enabled():
   # turn off thread patching to enable the remote debugger
   eventlet.monkey_patch(os=False, thread=False)
else:
  eventlet.monkey_patch(os=False, thread=False)
注:由于上述步骤中,将多线程关闭了,所以之后如果涉及到多线程协作流程(例如一次性创建多个虚拟机),将可能出现错误。

在控制节点执行:nova list 则会自动远程debug到eclipse中:





配置windows下的python2.7:
下载2.7版本的windows版本安装: https://www.python.org/downloads/release/python-2710/


如果上述情况大家调试不通,建议先使用一个简单的test文件来测试好远程debug,再来调试nova的上述代码:

vim test_eclipse_pydevd.py
print "I'm test eclipse remote debug python start" 
import pydevd
pydevd.settrace(host='192.168.1.18', port=5678, stdoutToServer=True, stderrToServer=True)
a = 3
b = 4
c = a + b
print "I'm test eclipse remote debug python end!!!"



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值