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。

相关推荐
C++忠实粉丝9 分钟前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
我们的五年34 分钟前
【Linux课程学习】:进程描述---PCB(Process Control Block)
linux·运维·c++
程序猿阿伟1 小时前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
爱摸鱼的孔乙己1 小时前
【数据结构】链表(leetcode)
c语言·数据结构·c++·链表·csdn
烦躁的大鼻嘎2 小时前
模拟算法实例讲解:从理论到实践的编程之旅
数据结构·c++·算法·leetcode
IU宝2 小时前
C/C++内存管理
java·c语言·c++
fhvyxyci2 小时前
【C++之STL】摸清 string 的模拟实现(下)
开发语言·c++·string
C++忠实粉丝2 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
古月居GYH2 小时前
在C++上实现反射用法
java·开发语言·c++
Betty’s Sweet2 小时前
[C++]:IO流
c++·文件·fstream·sstream·iostream