主要步骤:设置断点,F5开始调试
1.) 从WingIDE的安装目录(默认C:\Program Files (x86)\Wing IDE 6.0)复制wingdbstub.py到被调试代码所在目录
2.) 代码中添加importwingdbstub
3.) IDE左下角设置如图
4.) 在IDE中打开代码,必需;按需设置断点。
5.) 在IDE外通过python启动代码,这样就可以在IDE内调试了,注意观察左下角的debug状态。
1) 因为WingIDE调用putty和plink进行ssh连接,需要先设置putty。
点击下载putty,并解压,把解压路径附到操作系统PATH环境变量中,之后重新启动WingIDE,让它重新读取环境变量。
2) 设置Linux主机的密钥访问。如果已经做好了则跳过这一步。
在Linux主机执行ssh-keygen 一路按Enter。
添加公钥到要访问的远程机器:
cd ~/.ssh
cat id_rsa.pub >>authorized_keys
复制.ssh文件夹下的私钥id_rsa到本地。
3) 转换密钥格式为putty格式。
Win按键+R,输入PUTTYGEN执行。点击“load”,选择刚复制下来的私钥文件(从文件名后的下拉框选择All files),然后“save private key”。
保存的文件在下一步用到。
4) Win按键+R,输入putty 执行,并分别设置以下选项。
Session:主机ip,端口
Connection:用户名
Connection—SSH-Auth:选择Private key为上一步保存的文件。
Session:在Saved Sessions中填个名字并“Save”.
点击Open,如果提示信任主机key,点击“是”。此时各项正确的话应当能登入远程机器,确认正常后关掉putty。
5) 创建工程,工程文件来自远程计算机。
Project-new project,从下拉列表选择有ssh的一项。
Identifier:IDE自己内部的唯一名称,随便起。
Host Name:上一步putty保存的名称,一模一样。
WINGHOME: wingide的安装目录,若已安装则指定为已安装的目录;否则就是步骤6要自动安装到的目录。
Python 程序:不选择的话wingide从linux 的path中去找python。如果没有安装wingide,也不能选择,可以在安装wingide agent后再修改。
点击“ok”
6) 继续
也可以事先在Linux主机上装一个Linux版的WingIDE,上一步的winghome就是安装目录,并且也可以直接选择python程序路径。第四章的方法就需要装完整版。
7) 添加远程文件(或者文件夹)到项目,添加完之后就可以像本地调试一样了。
8) 由于Linux一般默认是python2,而在步骤5并没有选择python3.所以若使用python3,应当在项目属性中重新指定。
9) 需要设置项目属性中的文件编码和换行方式。
10) 在IDE中设置断点并运行。看效果。
11) Python shell这个工具栏,在它的菜单中点击restart后,启动的是远程的python。
1. Linux上安装WingIDE
需要在远程主机上装Linux版本的WingIDE pro。建议下载tar包格式的,可以从安装过程了解其结构,安装的wingide主要是提供调试组件。
2. 要进行调试,远程和本地都要有同一份代码才可以,还要保持同步。
一个简单的方法是建立共享,然后在windows映射网络驱动器。
使用samba在Linux建立共享:
sudo apt-get installsamba
sudo smbpasswd –a sk sk是用户名,应当是已经存在的一个系统用户名
sudo vim /etc/samba/smb.conf 最后添加
[sharecode]
path = /home/sk/code
read only = no
启动samba服务器 的服务,命令systemctl start samba或者类似。
在windows中访问\\172.18.60.220 输入用户名密码并记住密码。
设置映射网络驱动器。
在wingide里设置映射,Linux目录的实际地址和windows映射的对应关系。例如:
Linux下/home/sk/code通过samba共享后路径是 \\172.18.60.220\sharecode,windows下把\\172.18.60.220\sharecode映射为Z
映射关系则是 /home/sk/code 对应 Z:/ ;注意路径中都是/ ,而不是\
windows上的wingide设置:
3. 添加要调试的远程主机到允许列表,远程主机会连接本机WingIDE的5005端口。
设置windows的防火墙的允许规则,或者直接关掉防火墙。
4. 将Linux中WingIDE安装目录下wingdbstub.py复制到被调代码所在目录(注意不是复制windows版的),
代码添加importwingdbstub(前面已经建立映射,可以直接在win下编辑,但要注意编码和换行)。
修改wingdbstub.py中的kWingHostPort = 'localhost:50005' 为本地windows主机IP和本地WingIDE的监听端口(默认是50005)。
Wingdbstub.py的注释比较详细,具体含义大家自己看。
5. 把本地windows的"C:\Users\用户名\AppData\Roaming\Wing IDE 6\ " wingdebugpw文件复制到远程代码所在目录,与wingdbstub.py在一个目录。
这个文件是密码文件,WingIDE为了安全性而搞的,必需。
6. WingIDE左下角设置,开启监听端口。
7. 用WingIDE打开本地映射的远程py并设置断点。
远程启动py文件(别忘了第4步的import wingdbstub)即可调试。
实际上第二章就是这种用法的特例。
比如第四部分,启动了远程调试代码但忘了启动IDE,或者中间退出了IDE~~怎么办?
1. 前提就是被调试代码需要 import wingdbstub
2. 远程调试需要按照第四章第4节创建好映射,本地代码就不需要了。
3. 打开被调试代码(包括上面说的各种方式,都要先准备好代码);设置断点。
4. 在attach to process的对话框中输入被调试代码的侦听端口。
还有很重要的一点,在点击attach的时候,被调试代码必须是处在工作状态,否则连不上。常见的是服务端程序处于监听状态,必须给服务端一个指令,让它工作起来,才能attach。
5. 没有设置断点,有时debug probe中没法操作,会提示Cannot execute: debug process is busy。
这个都是支持的,默认部分启用,具体的看官方文档,内容也不是太多。