[VS工程技巧]远程调试工具及dump文件来检查程序崩溃及异常等问题
做什么
之前有一次梦中所得,既然可以让vs附加到进程去调试活动的dll,那要是可以让我本地的电脑去调试别人客户端或者测试环境的DLL就好了,这样就可以不通过dbgview去一个个输出看,而是可以直接调试到参数检查,并且根据报错检查问题所在了。
也正是这样的机缘巧合之下了解到远程调试工具,不得不感叹微软真的是一家伟大的公司,连这样的工具都有。
怎么做
实际上的工程应用很简单,步骤如下:
1.首先确定Visual Studio版本,比如你是2019版的VS,你就使用2019版的调试工具,总之调试方VS和被调试方的调试工具要保持版本一直。
这里就拿VS2019举例。
首先找到VS2019的调试工具,个人路径不同,如果你是默认设置可以参考一下我的路径
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Remote Debugger\x86
注意这个工具是分版本的,一般无脑用x86就行

注:这个文件夹是可以直接拎出来单独使用的,不需要别的依赖。
然后这个文件夹就可以随时拿出来,你可以放到自己的U盘或者移动硬盘什么的位置,方便随时取用的就行。
然后就可以把这个工具放到一台客机上,双击msvsmon.exe打开,打开后界面如此:
2.客机设置:

(注:在私有网络环境下才开启无身份验证,如果是公网请务必谨慎谨慎再谨慎,否则造成损失概不负责)
这里点击工具->选项->无身份验证->允许任何用户调试->最长空闲时间设为114514

提示这个之后就说明已经开启了连接。
3.主机设置
在主机上打开想要调试的DLL的工程文件,点击调试->附加到进程
选中连接类型->远程(无身份验证)->连接目标->查找


如果能连接的上,这里应该已经有指定的机器了
然后就可以让VS在远程网络环境下附加在指定 exe上进行调试了。
注
请务必保证两端DLL的代码保持一直,同时为了保证断点能够正常被命中,需要将主机中的pdb文件移植到客机的同位置上

比如这两个文件,如果你希望远程调试能够正常运行,则必须要把这个.pdb文件放在同目录下,因为实际上你本地进行这个DLL的调试也是通过这个.pdb文件进行的。也就是说,二者的pdb文件也最好需要保持一直,否则很难保证其能正常运作。
dump文件
dump文件的话,我之前有分享过一个qt的dump库,当然了google也有类似的库
Github:https://github.com/LeventureQys/LgQDumper
这个库的话,就是可以在程序异常退出的时候留出一块内存出来返回一个类似错误日志一样的dmp文件,vs可以直接分析,给它对应的pdb文件,就可以找到指定代码的位置并像正常的VS调试时报错一样指出是哪里除了问题。
这个也需要配合.pdb文件一起使用,这个东西的使用局限性比较大,关键时刻可能会给你提供思路,但不能过度依赖它,因为有时候它可以指出报错,但如果是空悬指针或者内存溢出,堆栈损坏等情况,可能会提供给你一个提示,但是并不会告诉你具体错在哪。
除此之外,它也无法告诉你运行的应用程序依赖的库的错误,比如A.exe依赖了B.dll,如果B.dll发生异常崩溃,那么A.exe是捕获不到B.dll的异常崩溃的,但是会返回给你一段代码告诉你比如0xC0000005这样的错误,不过不会告诉你具体在哪。
总而言之,言而总之,能用就行,不用奢望太多
[VS工程技巧]远程调试工具及dump文件来检查程序崩溃及异常等问题的更多相关文章
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件. 步骤: 1) 打开WinDBG并将之Attach 到 ...
- dump文件定位程序崩溃代码行
1.dump文件 2.程序对应的pdb 步骤一:安装windbg 步骤二:通过windbg打开crash dump文件 步骤三:设置pdb文件路径,即符号表路径 步骤四:运行命令!analyze -v ...
- 程序自动生成Dump文件
前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件, drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了 ...
- 程序自动生成Dump文件()
前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件, drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了 ...
- WinDbg抓取程序报错dump文件的方法
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...
- C# 异常内存信息导出Dump文件
背景:很多情况下程序崩溃我们只能看到程序抛出来的异常信息,但是有时候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取程序运行时的内存进行调试,查看其中的变量.参数.方法执 ...
- 在k8s中收集jvm异常dump文件到OSS
现状 加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/test.dump 可以实现在jvm发生内存错误后 会生成dump文件 方便开 ...
- Dump文件的生成和使用
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lk142500/article/detai ...
- 如何使用dump文件进行调试
转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...
- dump解析入门-用VS解析dump文件进行排障
突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...
随机推荐
- 深度解读DBSCAN聚类算法:技术与实战全解析
探索DBSCAN算法的内涵与应用,本文详述其理论基础.关键参数.实战案例及最佳实践,揭示如何有效利用DBSCAN处理复杂数据集,突破传统聚类限制. 关注TechLead,分享AI全维度知识.作者拥有1 ...
- SpringCore 完整学习教程1,入门级别
1. SpringApplication SpringApplication类提供了一种方便的方式来引导从main()方法启动的Spring应用程序.在很多情况下,你可以委托给静态的SpringApp ...
- scroll-view和swiper的使用
源码: <template> <viex class="out"> <view class="b ...
- springBoot——多环境开发
不常用的application.properties版的 常用的:application.yml版 #多环境开发,设置启用环境 spring: profiles: active: test --- # ...
- MinIO客户端之ping
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc ping 检查指定的MinIO节点的服务是否可用. 不带参数,命令如下: ./mc ping local1 ...
- kubernetes不同pod之间调用(四)
kubernetes不同pod之间调用(四) k8s系列 源自我工作上的实际场景,记录于此. kubernetes不同服务间的调用.kubernetes不同容器间的调用.kubernetes不同- 今 ...
- 使用NPOI导出Excel,并在Excel指定单元格插入图片
一.添加Nuget引用 二.弹框选择保存路径 string fileName = $"记录_{DateTime.Now.ToString("yyyyMMdd_HHmmss" ...
- C#有望成为2023年的编程语言之王
前言 TIOBE 2023年12月编程语言指数头条新闻:C#有望成为2023年的编程语言之王. TIOBE是什么? 访问地址:https://www.tiobe.com/tiobe-index/ TI ...
- Asp .Net Core系列:AutoMapper自动映射框架介绍、使用
1.介绍 AutoMapper是一个对象-对象映射器.对象-对象映射通过将一种类型的输入对象转换为另一种类型的输出对象来工作.使AutoMapper变得有趣的是,它提供了一些有趣的约定,以免去搞清楚如 ...
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
摘要:看一个SDK如何拯救初入职场的程序猿小Hi- [职场初体验] 时间过得真快,距离上次给小Hi安排"人脸识别"的开发任务(话接上期:[快速玩转华为云开发]小Hi拍了拍你,基于华 ...