Python的远程调试指南
来源:互联网 发布:网络教育在线 编辑:程序博客网 时间:2024/05/21 09:46
简要介绍:由于自动化脚本通常是部署在远程的执行机上执行的,所以我们经常会遇到在本地A机器上调试代码通过,但是放在远程的机器B上运行就会失败。本文所将的内容就是如何设置python的remotedebugger从而做到在本地A机器上通过远程调试工具调试远程B机器上的脚本。
设置方法:
配置Komodo的环境:
Step1:在Edit菜单中选择Preferences
Step2:在打开Preferences对话框中选择languages,选择python并设置python路径。(本例中我的python安装在D:\python24下,所以我选择的内容如下图)
Step3:设置完毕后点击OK关闭。
在远程机器(被调试机器上)安装Remotedebugger:
- Step1:查看远程机器上是否包含loggin组件,查看方法:
在命令行cmd下输入如下命令,验证返回内容为”OK”
python -c "import logging; print 'ok'"
如果以上步骤显示”OK”则继续下一步骤,否则请排查问题原因。
- Step2:在远程机器上下载并安装Komodo-PythonRemoteDebugging package:
- 访问http://code.activestate.com/komodo/remotedebugging/
- 根据本地使用的komodo版本和操作系统类型选择相应的版本下载。(实例中我使用的是komodo7,所以下载了相应在windows下的组件)
- 解压下载后的zip文件,如图:
Step3:将图中除bin文件之外的所有文件(如图中所示),拷贝到远程机器的python库文件目录,即:
python安装\\lib\\site-packages目录下
示例中,远程机器的python安装目录为c:\python24,所以dbgp拷贝的目录为C:\Python24\Lib\site-packages
Step4:测试远程机器上的dbgp是否安装成功,测试方法:
在命令行中输入
python -c "import dbgp.client; print 'ok'"
如果显示OK,则继续下一步骤,否则请排查原因。
- Step5: 拷贝解压目录中的bin目录到远程机器上一个方便的文件夹。
将图中的bin目录拷贝的远程机器中的任意一个方便的路径,例如D:\bin目录
- Step6: 在远程机器的环境变量PATH中增加该bin目录。例如上述步骤我们拷贝bin目录到D:\bin,则在环境变量PATH中增加D:\bin;
Step7: 在远程机器环境变量的PATHEXT中增加.PY
Step8: 测试远程机器上的环境配置情况,测试方法:
在命令行中输入
pydbgp --help
配置正确的话,会显示如下图所示
进行脚本的远程调试:
Step1:在本地环境查看debugger connection是连接中,查看方法:确保debug下的listen for debugging connection是勾选状态
Step2:查看本机的ip地址(ipconfig)
Step3:查看本机的端口号,查看方法:打开debug->listener status
hostport端口号可以在komodo的设置功能中调整,默认采用的是9000
Step4: 登录到远程机器上,将要调试的脚本拷贝的远程机器上
例如:我们将如下测试脚本命名为GetSystemInfo.py,并拷贝到远程机器的D:\script目录下
#!/usr/bin/env python#coding=utf-8import osimport sockethomedir = os.getcwd()appdatadir = os.getenv("APPDATA")myname = socket.getfqdn(socket.gethostname( ))print "homedir=" + homedirprint "appdatadir=" + appdatadirprint "ComputeName=" + myname#myaddr = socket.gethostbyname(myname)#print myaddr
- Step5: 在远程机器上运行pydbgp命令行,命令行格式为:
pydbgp -d localhost:9000 your-script.py
本例中,调试工具所在机器IP地址为10.129.157.108,远程机器上脚本所在路径为D:\script\GetSystemInfo.py,所以在远程机器上运行的命令行为:
pydbgp -d 10.129.157.108:9000 GetSystemInfo.py
Step6: 运行以上命令后,本机调试工具komodo会提示远程脚本与本地脚本需要做关联,在对话框中选择本地对应的脚本即可。
注意:调试的时候需要确保本地脚本与远程机器脚本一致,否则断点所在行是错乱的)
Step7: 最后就可以单步调试了。看一下实例中的效果吧:
GetSystemInfo.py是一个获取本地机器名、脚本所在路径和appdata路径的脚本。
当这个脚本在本地机器A上运行时,提示内容为:
当这个脚本远程运行在B机器上,但是在A机器上调试时,提示内容为:
- Python的远程调试指南
- 远程调试Python进程的小工具
- vs2013下的python远程调试支持
- pycharm远程python调试
- vs2013下的python远程调试支持(2) :工程调试
- Android版火狐:远程调试功能指南
- Android版火狐:远程调试功能指南
- python远程调试Django程序
- vs2013下的python远程调试支持(1)
- Velt-0.2.6对Python远程调试的支持
- Eclipse的远程调试
- Eclipse的远程调试
- Eclipse的远程调试
- java 的远程调试
- tomcat的远程调试
- Applet的远程调试
- Eclipse的远程调试
- VS2010的远程调试
- python之正则匹配
- 提供给开发者 10 款最好的 Python IDE
- java读取和遍历properties文件并根据key进行排序
- jQuery通过class属性获取对象(class的值有两个的时候)
- ACM学习感悟——HDU1505 最大0矩阵
- Python的远程调试指南
- xib问题
- JPA中的EntityManager
- 记博客开通的第一天
- 移动办公系统现状分析
- Perl CGI 调试的几种方法
- STL 源码剖析 读书笔记 第一章
- 求解较繁琐的式子的值
- 面试相关基础知识