Visual Studio C++项目远程断点调试客户现场程序方法

news/2024/7/16 9:08:51 标签: visual studio, c++, ide

前言

程序开发一个很常见的场景,就是程序在自己本地部署调试明明一点问题都没有,但是部署到客户现场就问题百出,要调试起来还很困难,在自己本地也没有条件复现,很多时候只能靠日志一点点排查和猜测,耗费大量时间精力,最后发现只是因为环境不同,导致的一个很小的问题。

这个问题在工业自动化程序开发更为突出,自己本地没有一整套外部硬件可以测试,但到了实际上机测试,很多问题就暴露出来了,又不能在生产环境的机器上安装整个开发环境,调试过程往往也需要耗费大量时间精力,有些问题更是可能成为玄学问题,只能靠曲线救国或者不停地打补丁式来规避。

其实Visual Studio有一个完美的方法来应对这样的场景,就是远程调试,可以让你在自己电脑上通过Visual Studio,远程连接到实际的生产设备上。

说白了就是代码和开发环境在你电脑上,执行文件和运行环境在生产设备上。生产环境运行时出现问题,会通过远程调试软件把错误信息发到你的Visual Studio上,从而实现原本只能在自己电脑上的各种调试方法,包括断点调试,单步调试和异常中断等。

步骤

使用起来也很简单,方法和安装文件在以下链接

Remote Debug a C++ Project - Visual Studio (Windows) | Microsoft Learn

选择并下载你的Visual Studio 对应版本的远程调试工具,这里我选择2019版

下载后,在生产设备上安装,设置好防火墙,开启调试工具

 顺利的话开启后界面是这样的

然后将你的部署文件复制到生产设备上。

在你自己的Visual Studio上,右键对应的项目,点击【属性】-【配置属性】-【调试】-【要启动的调试器】,选择【远程windows调试器】。

【远程命令】填生产设备上要启动的exe路径。

【工作目录】选择生产设备上部署文件的目录。

【远程服务器名称】填远程调试器启动的服务器名+端口。

设置完是这样的。

选择【远程Windows调试器】,输入生产设备的用户名密码即可开始远程调试。

需要注意的是,本地代码改动后,需要把生成的文件覆盖到生产环境上,再开始调试。

这一步Visual Studio似乎也支持自动部署过去,但是勾选的选项是暗的,暂时还没去进一步研究如何自动部署。

拓展

在局域网环境内进行远程调试,只要防火墙配置好,不需要更多对网络进行配置,即开即用即可。

如果需要跨越公网到客户现场,远程进行调试,理论上也是可行的。

首要前提是客户现场能连上网络。实在不行临时用随身wifi连一下,这个问题不大。

齐次的是需要进行内网穿透,这个可以结合frp或者Zerotier之类的内网穿透工具,理论上也是可行的。

frp的优势是开源,稳定可控,甚至可以整合到自己开发的程序里。但是劣势是需要自己有一台有公网IP的云服务器,需要自己稍微配置下。

Zerotier的优势是啥也不需要,两边安装完程序即可,免费方便,并且网络好的情况下能实现点对点满带宽传输。劣势是有时候不太稳定。


http://www.niftyadmin.cn/n/5403698.html

相关文章

springboot233大学生就业需求分析系统

大学生就业需求分析系统设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲&#xff…

多维时序 | Matlab实现GRNN广义回归神经网络多变量时间序列预测

文章目录 效果一览文章概述源码设计参考资料效果一览

备战蓝桥杯---动态规划的一些思想1

话不多说,直接看题: 目录 1.双线程DP 2.正难则反多组DP 3.换个方向思考: 1.双线程DP 可能有人会说直接贪心:先选第1条的最优路径,再选第2条最优路径。 其实我们再选第1条时,我们怎么选会对第2条的路径…

【LeetCode:2368. 受限条件下可到达节点的数目 + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

1、Linux-安装

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储,包括硬件 3、Linux不靠拓展名区分文件类型,而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…

Acwing 周赛132 解题报告 | 珂学家 | 并查集 + floyd寻路

前言 整体评价 A. 大小写转换 Q: 把字符串s统一成小写字母形态 题型&#xff1a;签到 知识点: 考察字符串的API题 c可以借助transform函数&#xff0c;进行转化 #include <bits/stdc.h>using namespace std;int main() {string s;cin >> s;// 把自己转化为小写…

【数据结构和算法初阶(C语言)】顺序表+单链表经典例题图文详解(题解大合集,搭配图文演示详解,一次吃饱吃好)

目录 1.移除链表元素 1.1思路1&#xff1a;遍历删除 1. 2 思路2&#xff1a;尾插法 2.反转链表 3.链表的中间节点 3.1解题思想及过程 3.2快慢指针思想解题---变式&#xff1a;返回链表的倒数第K个节点 4.合并两个有序链表 4.1解题思想 1取小的尾插 5.反转链表 6…

深入了解 Android 中的 FrameLayout 布局

FrameLayout 是 Android 中常用的布局之一&#xff0c;它允许子视图堆叠在一起&#xff0c;可以在不同位置放置子视图。在这篇博客中&#xff0c;我们将详细介绍 FrameLayout 的属性及其作用。 <FrameLayout xmlns:android"http://schemas.android.com/apk/res/androi…