您的位置:首页 > 编程语言 > Java开发

使用eclipse+pydev远程调试OpenStack

2016-05-17 19:05 435 查看
1, 对于要远程调试的WSGI web应用中,添加如下代码,其中172.16.1.122是指远程安装eclipse机器的ip地址。

import pydevd

pydevd.settrace(‘172.16.1.122’, 1234, stdoutToServer=False, stderrToServer=False)

若用了monkey_patch的话,记得将thread设置成Flase, eventlet.monkey_patch(os=False, thread=False)

举例, 假如我们要调试nova-compute,可照下列方式启动服务,它将自动做如上设置

nova-compute –remote_debug-host 172.16.1.122 –remote_debug-port 1234

2, eclipse端,首先设置环境变量

import sys

sys.path.append(‘/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/’)

或者:

export PYTHONPATH=/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/:$PYTHONPATH

或者在eclipse工程点右键的属性的PyDev-PYTHONPATH里添加一个External Libraries,方法多得很,都行。

3,eclipse端,其次要保证eclipse端也有同样的代码,如果在不同目录,可以使用修改/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/pydevd_file_utils.py文件:

PATHS_FROM_ECLIPSE_TO_PYTHON = [(r’/bak/openstack’, r’/server_side/openstack’)]

4, 将远端nova-compute服务启动后(pydevd.settrace之后),在本地的eclipse中进入”Debug”视图后会看到一个“PyDev: start the pydev server”按钮然后点击它,这时候eclipse就和远端连接上了。

剩下该设置断点设置断点,平时该怎么做就怎么做了。

我在看完上面的资料后还是很疑惑,感觉没说清楚。 经过使用测试后总结下经验,使用中大家需注意以下四个问题:

eclipse端是debug服务端 , 即端口的监听端, 也就是说远端要调试的python代码文件是作为客户端连接eclipse端的端口(如:默认端口 5678), 切记!!我在这里吃了大亏。

在eclipse插件plugins目录查找到pydevd.py文件后,将文件所在的整个个文件夹copy到需要调试的机器的python文件的site-packages目录下,并保证可以访问到pydevd.py(我使用了在site-packages目录下建立pysrc.pth文件指定路径方式),可参考文章最后的url。

如果远程调试,一般python代码的路径在eclipse端与远程机器上的路径是不一样的,一定记住修改pydevd_file_utils.py中的PATHS_FROM_ECLIPSE_TO_PYTHON值,修改具体值可以看下文件中关于这个变量的注释,而且注释中还有举例说明。

在需要调试的代码中使用下面代码:

import pydevd
pydevd.settrace(‘eclipse端服务器地址‘, port=端口5678, stdoutToServer=True, stderrToServer=True)


官网参考: http://www.pydev.org/manual_adv_remote_debugger.html

其它参考:http://blog.csdn.net/tantexian/article/details/47003385
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: