1. 介绍
MSVC++的调试功能非常强大,可以下断点,单步调试,查看堆栈变量信息等。实际用于生产的电脑环境复杂,更容易发生Bug。生产电脑,由于各种原因有些可能无法安装MSVC用来现场调试。基于打印日志,查看日志的方式来分析,一些简单的问题可以解决,但是一些复杂的问题,尤其是语法问题,还是在线调试更方便。
针对上述情形,跨电脑的远程调试就出现了,完美解决上述问题。远程调试,一台生产电脑,一台开发电脑,共同接入一个局域网。开发电脑远程连接生产电脑,然后就像调试本地程序一样调试运行于生产电脑上的程序。
2. 远程调试
2.1. 生产电脑
-
将开发电脑上的Remote Debugger目录拷贝到生产电脑。
-
根据程序的类型x64/x86打开相应的目录,并打开生产电脑目录下的msvsmon.exe。
-
配置msvsmon.exe的Tools->Options。4015是默认的端口号,一般不建议修改。
-
获取生产电脑的IP,局域网网络通信,可以使用计算机名:端口号的方式,也可以使用IP:端口号的方法。但是在访问跨网关的局域网电脑时,计算机名可能无法解析出对应的IP地址,导致访问失败,所以更推荐IP:端口号的访问方式。
-
从开发电脑上将待调试二进制可执行文件拷贝到生产电脑任意目录,不需要附带pdb文件。
2.2. 开发电脑
MSVC++的本地调试分为启动调试和附加调试。远程调试也同样分为启动调试和附加调试。
开始远程调试之前,先使用telnet ip地址 端口号测试网络连接。
2.2.1. 启动调试
-
启动工程->Properties->Debugging
-
开始调试
下断点,按F5开始调试,和本地调试一样。
查看符号文件载入信息,Information中第一行是生产电脑上的可执行文件的当前目录,第二行是可执行文件exe中记录的相应的PDB文件路径,也即开发电脑上的PDB文件默认路径。两个PDB路径,只要有一个匹配即可。
2.2.2. 附加调试
-
在生产电脑上启动待调试的可执行文件。
-
打开MSVC++工程,从菜单启动Debug->Attach to Process
Qualifier中推荐IP:端口,4015是默认端口号,可以省略。待Available Processes中出现待测试的远程进程,选中进程,然后点击Attach进入调试。
-
下断点开始调试。
3. 外网远程调试
有时间,生产电脑在外地,出差过去现场调试,成本太高。用于局域网的远程调试是否可以用于广域网呢?此时可以使用VPN隧道技术,让广域网访问和局域网访问效果一样,直接可以访问指定电脑的局域网IP。VPN软件,有商用的,也有免费试用的,如TeamViewer就支持VPN访问,在安装TeamViewer时设置高级配置时勾选安装VPN。