MSVC++远程调试

1. 介绍

MSVC++的调试功能非常强大,可以下断点,单步调试,查看堆栈变量信息等。实际用于生产的电脑环境复杂,更容易发生Bug。生产电脑,由于各种原因有些可能无法安装MSVC用来现场调试。基于打印日志,查看日志的方式来分析,一些简单的问题可以解决,但是一些复杂的问题,尤其是语法问题,还是在线调试更方便。

针对上述情形,跨电脑的远程调试就出现了,完美解决上述问题。远程调试,一台生产电脑,一台开发电脑,共同接入一个局域网。开发电脑远程连接生产电脑,然后就像调试本地程序一样调试运行于生产电脑上的程序。

2. 远程调试

2.1. 生产电脑

  1. 将开发电脑上的Remote Debugger目录拷贝到生产电脑。

  2. 根据程序的类型x64/x86打开相应的目录,并打开生产电脑目录下的msvsmon.exe。

  3. 配置msvsmon.exe的Tools->Options。4015是默认的端口号,一般不建议修改。

  4. 获取生产电脑的IP,局域网网络通信,可以使用计算机名:端口号的方式,也可以使用IP:端口号的方法。但是在访问跨网关的局域网电脑时,计算机名可能无法解析出对应的IP地址,导致访问失败,所以更推荐IP:端口号的访问方式。

  5. 从开发电脑上将待调试二进制可执行文件拷贝到生产电脑任意目录,不需要附带pdb文件。

2.2. 开发电脑

MSVC++的本地调试分为启动调试和附加调试。远程调试也同样分为启动调试和附加调试。

开始远程调试之前,先使用telnet ip地址 端口号测试网络连接。

2.2.1. 启动调试

  1. 启动工程->Properties->Debugging

  2. 开始调试

    下断点,按F5开始调试,和本地调试一样。

    查看符号文件载入信息,Information中第一行是生产电脑上的可执行文件的当前目录,第二行是可执行文件exe中记录的相应的PDB文件路径,也即开发电脑上的PDB文件默认路径。两个PDB路径,只要有一个匹配即可。

2.2.2. 附加调试

  1. 在生产电脑上启动待调试的可执行文件。

  2. 打开MSVC++工程,从菜单启动Debug->Attach to Process

    Qualifier中推荐IP:端口,4015是默认端口号,可以省略。待Available Processes中出现待测试的远程进程,选中进程,然后点击Attach进入调试。

  3. 下断点开始调试。

3. 外网远程调试

有时间,生产电脑在外地,出差过去现场调试,成本太高。用于局域网的远程调试是否可以用于广域网呢?此时可以使用VPN隧道技术,让广域网访问和局域网访问效果一样,直接可以访问指定电脑的局域网IP。VPN软件,有商用的,也有免费试用的,如TeamViewer就支持VPN访问,在安装TeamViewer时设置高级配置时勾选安装VPN。

相关推荐
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
青花瓷6 小时前
C++__XCode工程中Debug版本库向Release版本库的切换
c++·xcode
幺零九零零7 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
捕鲸叉7 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
Dola_Pan8 小时前
C++算法和竞赛:哈希算法、动态规划DP算法、贪心算法、博弈算法
c++·算法·哈希算法
yanlou2338 小时前
KMP算法,next数组详解(c++)
开发语言·c++·kmp算法
小林熬夜学编程8 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
阿洵Rain9 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法