本文共 1428 字,大约阅读时间需要 4 分钟。
eclipse/plugins/org.python.pydev_x.x.x/pysrc/pydevd.py |
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)
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!!!" |