Visual Studio 2022 远程调试
Visual Studio 2022 远程调试全过程
这篇文章尽可能地精细记录如何使用 Visual Studio 2022 完成 Windows 系统上的远程调试。适用场景包括本地编译,远程运行,两台机器分工合作调试。
一、设备网络通信环境
1.1 确保两台设备通信
- 本地设备: 安装 Visual Studio 2022
- 远程设备: 应能运行程序,支持进程启动
1.2 设置同一个网段
本地设备:
远程设备:
1.3 测试 Ping
在本地 CMD 中输入:
ping 192.168.0.20
- 如果返回 TTL=值表示通信
- 若返回 超时,确保远程机器已打开 ICMP
二、设置共享文件夹
2.1 创建文件夹
在远程设备上创建:
D:\Servo\Debug
2.2 启用共享访问
- 右键 -> 属性 -> 共享
- 指定共享名:
Servo
- 添加您本地设备上的 Windows 账户(如:
Darker
) - 确认账户并分配权限为 “读写”
2.3 测试 UNC 路径访问
在本地设备文件夹输入:
\\192.168.0.20\Servo\Debug
如能正常显示,则设置成功
三、部署 Remote Debugger (msvsmon)
有两种方式安装 Remote Debugger:
3.1 方式 1: 复制 VS 本地带的 msvsmon.exe
- 本地路径:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Remote Debugger\x64
- 将全部文件夹复制到远程设备,如:
D:\Servo\RemoteDebugger\
- 运行
msvsmon.exe
-
首次启动选择:
- 配置远程调试
- 无身份验证 (快捷模式)
- 确认 Windows 防火墙已放行 TCP 4026
3.2 方式 2: 从官网下载 Remote Tools 安装(旧版本需要有订阅)
-
打开官方下载页面:
https://learn.microsoft.com/zh-cn/visualstudio/debugger/remote-debugging
https://visualstudio.microsoft.com/zh-hans/downloads/?cid=learn-onpage-download-cta -
选择系统平台:
- AMD64 (大部分 Windows 操作系统)
- x86 或 ARM64 根据需求
- 安装后,运行:
Remote Debugger
-
配置步骤和 msvsmon.exe 相同:
- 连接类型:Windows 身份验证 / 无身份
- 防火墙放行端口
四、Visual Studio 配置
4.1 调试模式切换
- 项目上方 “运行” 按钮旁边 -> 选择 【远程 Windows 调试器】
4.2 设置项目属性 -> 调试
项目 | 设置值 |
---|---|
调试器 | 远程 Windows 调试器 |
远程命令 | \\DESKTOP-IODBVIQ\Servo\Debug\Servo.exe |
工作目录 | \\DESKTOP-IODBVIQ\Servo\Debug |
远程服务器 | DESKTOP-IODBVIQ |
连接方式 | 带 Windows 身份验证 |
4.3 生成后事件: 自动备份到远程
输入:
xcopy /Y /D "$(OutDir)*.exe" "\\DESKTOP-IODBVIQ\Servo\Debug\"
xcopy /Y /D "$(OutDir)*.pdb" "\\DESKTOP-IODBVIQ\Servo\Debug\"
$(OutDir)
是 Debug 输出目录,例如D:\Project\x64\Debug\
- 确保目标文件夹存在
五、启动远程调试
- 运行远程设备上
msvsmon.exe
- 本地 Visual Studio 点 F5
- 如果配置无误,将自动启动远程程序,并可以打断点
附录: 常见问题检查
问题 | 原因或解决方案 |
---|---|
“Z:\Debug” 不是有效目录 | UNC 路径不支持转换成盘符,请使用 \\host\path |
xcopy 报错 MSB3073 | 路径有误,或 target dir 未共享或访问被拒绝 |
msvsmon 运行后未监听 | 未配置或防火墙未放行端口 (4026) |
结论
远程调试是 VS2022 的高级性能,特别适合开发和运行分离的环境。
相关文章:
Visual Studio 2022 远程调试
Visual Studio 2022 远程调试全过程 这篇文章尽可能地精细记录如何使用 Visual Studio 2022 完成 Windows 系统上的远程调试。适用场景包括本地编译,远程运行,两台机器分工合作调试。 一、设备网络通信环境 1.1 确保两台设备通信 本地设备: 安装 Visu…...
Linux:线程同步与互斥
目录 线程互斥 锁 初始化 销毁 加锁 解锁 线程同步 条件变量 初始化 销毁 等待条件满足 唤醒等待 pthread_cond_signal pthread_cond_broadcast 生产者消费者模型 3种关系 2种角色 1个交易场所 POSIX信号量 初始化 销毁 等待 发布 线程互斥 互斥相关…...
Kotlin Android LeakCanary内存泄漏检测实战
在Kotlin Android应用中使用LeakCanary检测内存泄漏的步骤如下: 1. 添加依赖 在模块的build.gradle文件中添加LeakCanary依赖: dependencies {debugImplementation com.squareup.leakcanary:leakcanary-android:2.12 // 使用最新版本 }2. 自动初始化&…...
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
在 MySQL 中,COUNT(*)、COUNT(1) 和 COUNT(字段名) 的核心区别在于 统计逻辑 和 性能表现,具体如下: 1. 统计逻辑差异 函数形式统计规则COUNT(*)统计表中所有行的数量,忽略字段值是否为 NULL(包括主键、非主键、NULL …...
CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
CAD插件实现块属性值与excel的互动,效果如下: 加载dll插件(CAD 命令行输入netload ,运行xx即可导出Excel,运行xx1即可根据excel更新dwg块属性值。) 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…...
青少年编程与数学 02-019 Rust 编程基础 05课题、复合数据类型
青少年编程与数学 02-019 Rust 编程基础 05课题、复合数据类型 一、元组(Tuple)(一)元组的定义(二)创建元组示例 (三)解构元组示例 (四)使用点号语法访问元组…...
51单片机入门教程——AT24C02数据存储
前言 本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。 目录 …...
cdn 是什么?
内容分发网络,Content Delivery Network 介绍 CDN(Content Delivery Network)是一种将内容分发到靠近用户的边缘服务器,以加速访问速度、减少延迟、降低源站压力的网络系统。 CDN 把网站的静态资源(如 HTML、JS、CSS、…...
ENSP三层交换机实验原理及过程
华为eNSP(Enterprise Network Simulation Platform)是一款网络仿真工具,用于模拟华为网络设备的配置和操作。在三层交换机实验中,主要涉及三层交换机的路由功能、VLAN间通信、静态路由、动态路由协议(如OSPF、RIP&…...
RK3568-OpenHarmony(1) : OpenHarmony 5.1的编译
概述: 本文主要描述了,如何在ubuntu-20.04操作系统上,编译RK3568平台的OpenHarmony 5.1版本。 搭建编译环境 a. 安装软件包 sudo apt-get install git-lfs ruby genext2fs build-essential git curl libncurses5-dev libncursesw5-dev openjdk-11-jd…...
动态路由EIGRP的配置
动态路由EIGRP的配置 动态路由EIGRP:增强内部网关协议 为何收敛快、不成环? 路由计算的无环路和路由的收敛速度是路由计算的重要指标。EIGRP协议由于使用了DUAL算法,使得EIGRP协议在路由计算中不可能有环路路由产生,同时路由计…...
Paging 3.0 + Kotlin 分页加载指南
Paging 3.0 是 Android Jetpack 组件中用于高效分页加载数据的现代化方案,结合 Kotlin 协程和 Flow 特性,能够显著简化分页逻辑的实现。以下是完整的实现指南和最佳实践: 一、Paging 3.0 核心优势 内置加载状态管理:自动跟踪加载…...
湖南(源点咨询)市场调研 商业综合体定位调研分享(下篇)
接着中篇,我们就要重点分析一下该地区消费者的特点: 综合来看,本地区还是以中等收入工薪阶层的新市民家庭为主,以亲子关系为家庭核心,居住条件改善、生活向好,渴望公共配套的提升丰富生活质感,…...
vue 中的ref
vue 中的ref vue 中的ref 1. ref ** 的基本作用** 在 Vue 中,ref 是用来获取 DOM 元素或者组件实例的一种方式。对于 <el-form> 组件,通过 ref 可以获取到该表单组件的实例,进而调用表单组件提供的各种方法和访问其属性。 …...
Kotlin 协程 vs RxJava vs 线程池:性能与场景对比
1. 轻量级任务:10,000 个并发延迟操作 假设需要并发执行 10,000 个非阻塞延迟任务(如模拟定时请求): 线程池实现 ExecutorService executor Executors.newFixedThreadPool(64); // 最多 64 线程 List<Future<?>>…...
golang-ErrGroup用法以及源码解读笔记
介绍 ErrGroup可以并发执行多个goroutine,并可以很方便的处理错误 与sync.WaitGroup相比 错误处理 sync.WaitGroup只负责等待goroutine执行完成,而不处理返回值或者错误errgroup.Group目前虽然不能直接处理函数的返回值或错误。但是当goroutine返回错…...
遗传算法组卷系统实现(Java版)
遗传算法组卷系统实现(Java版) 下面是一个完整的遗传算法组卷系统的Java实现,包含题目表示、适应度计算、选择、交叉和变异等核心操作。 1. 核心类设计 1.1 题目实体类(Question.java) public class Question {pri…...
JVM 逃逸分析
JVM逃逸分析:让Java对象"乖乖听话"的侦探游戏 大家好!我是你们的老朋友"代码神探福尔摩斯",今天要带大家破解一个JVM界的经典悬案——如何让Java对象乖乖待在它该待的地方? 第一章:案发现场——…...
第三天——贪心算法——区间问题
题目描述 给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。 输入输出样例 输入是一个数组,包含多个长度固定为的子数组,表示每个区间的开始和结尾。输出一个 整数,表示需要移除的区间数量。 …...
路由重发布
路由重发布 实验目标: 掌握路由重发布的配置方法和技巧; 掌握通过路由重发布方式实现网络的连通性; 熟悉route-pt路由器的使用方法; 实验背景:假设学校的某个分区需要配置简单的rip协议路由信息,而主校…...
嵌入式与物联网:C 语言在边缘计算时代的破局之道
引言 在万物互联的 2025 年,全球物联网设备连接数突破 300 亿台,其中 78% 的嵌入式控制系统仍基于 C 语言开发。这种跨越半个世纪的编程语言,正以新的技术形态在智能汽车、工业物联网、边缘计算等领域重塑竞争力。本文通过三个前沿应用场景&…...
计算机网络:WiFi路由器发射的电磁波在空气中的状态是什么样的?
WiFi路由器发射的电磁波是高频无线电波,属于微波频段(2.4GHz或5GHz),在空气中以光速传播(约310⁸米/秒),其传播状态和特性可通过以下维度详细解析: 一、电磁波的物理特性 频率与波长 2.4GHz频段:波长约12.5厘米,穿透力较强但易受干扰(微波炉、蓝牙等共用频段)。5GH…...
使用FastAPI和Apache Flink构建跨环境数据管道
系统概述 本文介绍如何使用FastAPI微服务、Apache Flink和AWS ElastiCache Redis构建一个可扩展的数据管道,实现本地Apache Hive数据仓库与AWS云上Redis之间的数据交互。 该架构通过FastAPI提供RESTful接口,Apache Flink处理数据流,实现了本…...
解决 SQL Server 2008 导入 Excel 表卡在“正在初始化数据流”问题
在使用 SQL Server 2008 导入 Excel 表时,可能会遇到卡在“正在初始化数据流”这一令人困扰的情况。笔者近期也遭遇了同样的问题,尝试了多种常规方法均未解决,最终通过特定命令成功化解难题,在此分享解决过程与经验。 一、问题描…...
【Linux系统】从零开始构建简易 Shell:从输入处理到命令执行的深度剖析
文章目录 前言一、打印命令行提示符代码功能概述 二、读取键盘输入的指令2.1 为什么不继续使用scanf()而换成了fgets()?2.2 调试输出的意义2.3 为什么需要去掉换行符? 三、指令切割补充知识: strtok 的函数原型 四、普通命令的执行代码功能概…...
SSRF服务端请求伪造
SSRF:服务端请求伪造 危害:任意文件读取、任意服务探测(通过端口来探测) 例:探测3306端口,看mysql服务是否开启,再通过文件读取,获得mysql配置文件 例:当我们点击链接…...
LVGL的三层屏幕结构
文章目录 🌟 LVGL 的三层屏幕架构1. **Top Layer(顶层)**2. **System Layer(系统层)**3. **Active Screen(当前屏幕层)** 🧠 总结对比🔍 整体作用✅ 普通屏幕层对象&…...
使用互斥锁保护临界
Linux线程互斥及相关概念解析 1. 临界资源(Critical Resource) 定义:被多个线程共享的资源(如变量、文件、内存区域等),需通过互斥访问确保数据一致性。特点: 共享性:多个线程可能…...
5.8线性动态规划2
P1004 [NOIP 2000 提高组] 方格取数 做法1:DFS剪枝 #include<bits/stdc.h> using namespace std; int n, a[10][10], maxs, minx 11, miny 11, maxx, maxy; void dfs(int x, int y, int s, int type){if(type 1 && x minx && y miny){…...
linux系统Ubuntn界面更改为中文显示,配置流程
Linux 系统是一种开源的、多用户的、多任务的操作系统,具有高度的稳定性、安全性和灵活性,被广泛应用于服务器、嵌入式系统、科研、教育以及个人电脑等领域。以下是关于 Linux 系统的一些基本信息: 发展历程:Linux 的发展始于 19…...
Looper死循环阻塞为什么没有ANR
Looper 死循环阻塞没有 ANR 的原因在于 ANR (Application Not Responding) 的检测机制依赖于特定线程的事件处理超时。以下是详细解释: 1. ANR 的触发机制: 主线程 (UI 线程) 阻塞: ANR 最常见的情况是主线程阻塞。Android 系统会监控主线程…...
数字孪生陆上风电场可视化管理系统
图扑软件搭建陆上风电场数字孪生平台,通过高精度建模与实时数据采集,1:1 还原风机设备、输电网络及场区环境。动态展示风机运行参数、发电量、设备健康状态等信息,实现风电场运维管理的智能化、可视化与高效化。...
图像处理篇---MJPEG视频流处理
文章目录 前言一、MJPEG流基础概念MJPEG流特点格式简单无压缩时序HTTP协议传输边界标记 常见应用场景IP摄像头视频流嵌入式设备(如ESP32)视频输出简单视频监控系统 二、基础处理方法方法1:使用OpenCV直接读取优点缺点 方法2:手动解…...
ensp的华为小实验
1.先进行子网划分 2.进行接口的IP地址配置和ospf的简易配置,先做到全网小通 3.进行ospf优化 对区域所有区域域间路由器进行一个汇总 对区域1进行优化 对区域2.3进行nssa设置 4.对ISP的路由进行协议配置 最后ping通5.5.5.5...
webpack和vite区别
webpack将文件视为模块打包 ,从入口文件递归解析依赖,生成依赖图,使用loader处理非JS模块,最终输出到dist目录 因为要解析所有依赖,所以他启动慢 vite利用浏览器对于es模块的原生支持,利用ESM能力&#x…...
从父类到子类:C++ 继承的奇妙旅程(2)
前言: 各位代码航海家,欢迎回到C继承宇宙!上回我们解锁了继承的「基础装备包」,成功驯服了public、protected和花式成员隐藏术。但—— ⚠️前方高能预警: 继承世界的暗流涌动远不止于此!今天我们将勇闯三大…...
ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。
ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换,从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果。 基…...
部署RocketMQ
部署环境:jdk8以上,Linux系统 下载和安装指令: wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip 显示下载成功: --2025-05-10 11:34:46-- https://archive.apache.org/dist/rocketm…...
从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净
1.停止并删除所有正在运行的容器 docker ps -a # 查看所有容器 docker stop $(docker ps -aq) # 停止所有容器 docker rm $(docker ps -aq) # 删除所有容器如果提示没有找到容器,可以忽略这些提示。 2.删除所有镜像 docker images # 查看所有镜像 dock…...
每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))
洛谷P2241 统计方形(数据加强版)题解 题目描述 给定一个 n m n \times m nm 的方格棋盘,要求统计其中包含的正方形数量和长方形数量(不包含正方形)。输入为两个正整数 n n n 和 m m m,输出两个整数分…...
LLaVA:开源多模态大语言模型深度解析
一、基本介绍 1.1 项目背景与定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人开发的开源多模态大语言模型,旨在实现GPT-4级别的视觉-语言交互能力。该项目通过视觉指令微调技术,将预训练的视觉编码器与语言模型深度融合,在多个多模态基准测试中达到…...
基于Spring Boot + Vue的母婴商城系统( 前后端分离)
一、项目背景介绍 随着母婴行业在互联网平台的快速发展,越来越多的家庭倾向于在线选购母婴产品。为了提高商品管理效率和用户购物体验,本项目开发了一个基于 Spring Boot Vue 技术栈的母婴商城系统,实现了商品分类、商品浏览、资讯展示、评…...
HNUST湖南科技大学-软件测试期中复习考点(保命版)
使用说明:本复习考点仅用于及格保命。软件测试和其他专业课不太一样,记忆的太多了,只能说考试的时候,想到啥就写啥,多写一点!多写一点!多写一点!(重要事情说三遍…...
【AI智能推荐系统】第七篇:跨领域推荐系统的技术突破与应用场景
第七篇:跨领域推荐系统的技术突破与应用场景 提示语:🔥 “打破数据孤岛,实现1+1>2的推荐效果!深度解析美团、亚马逊如何用跨领域推荐技术实现业务协同,知识迁移核心技术全公开!” 目录 跨领域推荐的商业价值跨领域推荐技术体系 2.1 基于共享表征的学习2.2 迁移学习…...
【现代深度学习技术】注意力机制04:Bahdanau注意力
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
使用FastAPI和React以及MongoDB构建全栈Web应用01 概述
Are you ready to craft digital experiences that captivate and convert? 您准备好打造令人着迷并能带来转变的数字体验了吗? In a world driven by innovation, the demand for robust and scalable web applications has never been higher. Whether you’re…...
Flutter - UIKit开发相关指南 - 概览
环境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 概览 UIView与Widgets的比较 在UIKit使用UIView类的对象进行页面开发,布局也是UIView类的对象,在Flutter中使用的是Widget,在概念上Widget可以理解成UIView。 差异: 有效期: Widgets是不可变的,它的生存期只…...
扩容 QCOW2 磁盘镜像文件
🌈 个人主页:Zfox_ 目录 ✅ 一、扩展 QCOW2 文件大小✅ 二、启动虚拟机后扩展分区和文件系统方式一:如果使用的是标准分区(如 /dev/vda1)方式二:使用 gparted(图形工具) ✅ 总结 &am…...
【ts】for in对象时,ts如何正确获取对应的属性值
第一种:for…in keyof:适合需要遍历对象属性键并动态访问值的场景。 keyof typeof obj是ts的类型操作符,用于获取对象obj的所有属性键的联合类型(“name” | “age” | “city”)通过obj[key keyof typeof obj]&…...
软考 系统架构设计师系列知识点之杂项集萃(55)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(54) 第89题 某软件公司欲开发一个Windows平台上的公告板系统。在明确用户需求后,该公司的架构师决定采用Command模式实现该系统的界面显示部分,并设计UML类图如…...