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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【DDD】学习笔记-限界上下文对架构的影响

通信边界对架构的影响 限界上下文的通信边界会对系统的架构产生直接的影响,在此之前,我们需要理清几个和边界有关的概念。如前所述,我提出了限界上下文的通信边界的概念,并将其分为进程内通信与进程间通信两种方式。在 Toby Clem…

grafana安装DevOpsProdigy KubeGraf 1.5.2

安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …

C++ Web 编程

什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口(CGI&…

人工智能福利站,初识人工智能,机器学习,第四课

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

重写Sylar基于协程的服务器(3、协程模块的设计)

重写Sylar基于协程的服务器(3、协程模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么? ONLYOFFICE是一款功能强大的在线协作办公软件,可以创建编辑Word文档、Excel电子表格,PowerPoint(PPT)演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台,无论使用的是 Windows、…

深入了解c语言字符串 2

深入了解c语言字符串 2 一 使用 scanf进行字符串的输入:1.1输入单词(不包含空格):1.2 输入带空格的整行文本:1.3 处理输入缓冲区:1.4 注意安全性: 二 使用 printf 字符串的输出:三 输…

2024美赛C题全网最早思路 网球运动(持续更新)

2024美赛已经于今天早上6点准时公布题目。本次美赛将全程跟大家一起战斗冲刺O奖!思路持续更新。 2024 MCM Problem C: Momentum in Tennis (网球运动的势头) 注:在网球运动中,"势头"通常指的是比赛中因一系…

Jmeter学习系列之五:线程组(Thread Group)

前言 线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。 例如,如果你设置线程数为 100,那么 jmeter 将创建…

2024美赛数学建模C题思路分析 - 网球的动量

1 赛题 问题C:网球的动量 在2023年温布尔登绅士队的决赛中,20岁的西班牙新星卡洛斯阿尔卡拉兹击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来首次在温布尔登公开赛失利,并结束了他在大满贯赛事中历史上最伟大的球员之一的非凡表…

双非本科准备秋招(13.1)—— 力扣 栈、队列与堆

1、103. 二叉树的锯齿形层序遍历 昨天做的二叉树的层序遍历,把代码直接拿过来。 这个题要求的是一个Z型遍历,如下图。 用一个变量f记录正反顺序,然后使用LinkedList记录答案,下图可以看到LinkedList继承了Deque,所以…

k8s二进制及负载均衡集群部署详解

目录 常见部署方式 二进制部署流程 环境准备 操作系统初始化配置 关闭防火墙 配置SELinux 关闭SWAP 根据规划设置主机名 在master添加hosts,便于主机名解析 调整内核参数 配置时间同步 部署docker引擎 在所有node节点部署docker引擎 部署etcd集群 签发…

【文本到上下文 #8】NLP中的变形金刚:解码游戏规则改变者

一、说明 欢迎来到我们对不断发展的自然语言处理 (NLP) 领域的探索的第 8 章。在本期中,我们将重点介绍一项重塑 NLP 格局的突破性创新:Transformers。在我们之前对 seq2seq 模型、编码器-解码器框架和注意力机制的讨论之后&#…

flutter如何实现省市区选择器

前言 当我们需要用户填写地址时,稳妥的做法是让用户通过“滚轮”来滑动选择省份,市,区,此文采用flutter的第三方库来实现这一功能,比调用高德地图api简单一些。 流程 选择库 这里我选择了一个最近更新且支持中国的…

ABAP Range Table:RANGES的使用

目录 Range TableRANGERANGES RANGE的四个参数SIGNOPTIONLOWHIGH示例程序 Range Table 1、Range Table 概述 RANGE TABLE为 SAP R/3系统标准内表的一种,结构与 Selection Table 一致, 由 SIGN, OPTION, LOW 和 HIGH字段组成; 可以通过 TYPE…

面试宝典之深谈JVM

面试宝典之深谈JVM 1.为什么需要JVM,不要JVM可以吗? 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译,到处运行 2.JVM可以运行Class文件 2.JDK,JRE以及JVM的关系 3.我们的编译器到底干了什么事? 仅仅是将我们的 .ja…

【动态规划】【C++算法】1340. 跳跃游戏 V

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1340跳跃游戏 V 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x…

用户界面(UI)、用户体验(UE)和用户体验(UX)的差异

对一个应用程序而言&#xff0c;UX/UE (user experience) 设计和 UI (user interface) 设计非常重要。UX设计包括可视化布局、信息结构、可用性、图形、互动等多个方面。UI设计也属于UX范畴。正是因为三者在一定程度上具有重叠的工作内容&#xff0c;很多从业多年的设计师都分不…

2024年美国大学生数学建模A题思路分析 - 资源可用性和性别比例

# 1 赛题 问题A&#xff1a;资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…