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。

相关推荐
INS_KF18 分钟前
【C++知识杂记2】free和delete区别
c++·笔记·学习
一只鱼^_26 分钟前
牛客周赛 Round 105
数据结构·c++·算法·均值算法·逻辑回归·动态规划·启发式算法
ikkkkkkkl28 分钟前
C++设计模式:面向对象设计原则
c++·设计模式·面向对象
啊阿狸不会拉杆1 小时前
《算法导论》第 27 章 - 多线程算法
java·jvm·c++·算法·图论
重启的码农1 小时前
ggml介绍 (8) 图分配器 (ggml_gallocr)
c++·人工智能·神经网络
重启的码农1 小时前
ggml介绍 (9) 后端调度器 (ggml_backend_sched)
c++·人工智能·神经网络
汉汉汉汉汉3 小时前
C++11新特性详解:从列表初始化到线程库
c++
楼田莉子4 小时前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
大锦终4 小时前
【算法】模拟专题
c++·算法
方传旺5 小时前
C++17 std::optional 深拷贝 vs 引用:unordered_map 查询大对象性能对比
c++