简要介绍:由于自动化脚本通常是部署在远程的执行机上执行的,所以我们经常会遇到在本地A机器上调试代码通过,但是放在远程的机器B上运行就会失败。本文所将的内容就是如何设置python的remotedebugger从而做到在本地A机器上通过远程调试工具调试远程B机器上的脚本。
Step2:在打开Preferences对话框中选择languages,选择python并设置python路径。(本例中我的python安装在D:\python24下,所以我选择的内容如下图)
Step3:设置完毕后点击OK关闭。
在命令行cmd下输入如下命令,验证返回内容为”OK”
python -c "import logging; print 'ok'"
如果以上步骤显示”OK”则继续下一步骤,否则请排查问题原因。
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'"
将图中的bin目录拷贝的远程机器中的任意一个方便的路径,例如D:\bin目录
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-8
import os
import socket
homedir = os.getcwd()
appdatadir = os.getenv("APPDATA")
myname = socket.getfqdn(socket.gethostname( ))
print "homedir=" + homedir
print "appdatadir=" + appdatadir
print "ComputeName=" + myname
#myaddr = socket.gethostbyname(myname)
#print myaddr
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路径的脚本。