做什么

之前有一次梦中所得,既然可以让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文件来检查程序崩溃及异常等问题的更多相关文章

  1. WinDBG 技巧:如何生成Dump 文件(.dump 命令)

    程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件. 步骤: 1) 打开WinDBG并将之Attach 到 ...

  2. dump文件定位程序崩溃代码行

    1.dump文件 2.程序对应的pdb 步骤一:安装windbg 步骤二:通过windbg打开crash dump文件 步骤三:设置pdb文件路径,即符号表路径 步骤四:运行命令!analyze -v ...

  3. 程序自动生成Dump文件

    前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件, drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了 ...

  4. 程序自动生成Dump文件()

    前言:通过drwtsn32.NTSD.CDB等调试工具生成Dump文件, drwtsn32存在的缺点虽然NTSD.CDB可以完全解决,但并不是所有的操作系统中都安装了NTSD.CDB等调试工具.了解了 ...

  5. WinDbg抓取程序报错dump文件的方法

    程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...

  6. C# 异常内存信息导出Dump文件

    背景:很多情况下程序崩溃我们只能看到程序抛出来的异常信息,但是有时候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取程序运行时的内存进行调试,查看其中的变量.参数.方法执 ...

  7. 在k8s中收集jvm异常dump文件到OSS

    现状 加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/test.dump 可以实现在jvm发生内存错误后 会生成dump文件 方便开 ...

  8. Dump文件的生成和使用

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lk142500/article/detai ...

  9. 如何使用dump文件进行调试

    转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...

  10. dump解析入门-用VS解析dump文件进行排障

    突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...

随机推荐

  1. [洛谷P3959][NOIP2017提高组] 宝藏

    [NOIP2017 提高组] 宝藏 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 \(n\) 个深埋在地下的宝藏屋, 也给出了这 \(n\) 个宝藏屋之间可供开发的 \(m\) 条道路 ...

  2. [ABC265F] Manhattan Cafe

    Problem Statement In an $N$-dimensional space, the Manhattan distance $d(x,y)$ between two points $x ...

  3. .NET周刊【12月第1期 2023-12-06】

    国内文章 .NET 与 OpenEuler 共展翅,昇腾九万里 https://www.cnblogs.com/shanyou/p/17858385.html 本文介绍了openEuler操作系统,它 ...

  4. 【内核】ELF 文件执行流程

    # ELF 文件分类 Linux中,ELF文件全称为:Executable and Linkable Format,主要有三种形式,分别是: 可执行文件 动态库文件(共享文件 .so) 目标文件(可重 ...

  5. Python——第二章:字符串操作——索引和切片

    索引: 按照位置提取元素 可以采用索引的方式来提取某一个字符(文字) s = "我叫周杰伦" print(s[3]) #程序员都是从0开始数,这里的3代表第4位,也就是" ...

  6. MyBatis 批量更新的处理

    一般来讲,在使用 MyBatis 进行数据库的访问时,通常会遇到需要更新数据的相关业务,在某些业务场景下,如果需要进行一批次的数据更新,可能性能不是特别理想.本文将简要介绍几种能够高效地处理批量更新数 ...

  7. 第五部分_Shell脚本条件判断语法结构

    条件判断语法结构 思考:何为真(true)?何为假(false)? 1. 条件判断语法格式 格式1: test条件表达式 格式2: [ 条件表达式 ] 格式3: [[ 条件表达式 ]] (支持正则~) ...

  8. EDS从小白到专家丨打造你的专属“数据物流”系统

    "数据快递"如何支撑便捷就医?本期让我们来了解如何使用EDS打造专属的"数据物流"系统...... 本文分享自华为云社区<[EDS从小白到专家]第2期-E ...

  9. 详解Apache Sentry->Ranger平滑升级方案

    摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题. 本文分享自华为云社区<[平滑上云]Apache Sentry->Ranger平滑升级方案>,作者: ...

  10. DevSecOps: CI/CD 流水线安全的最佳实践

    上一篇文章我们了解了 IAST 及其优势.工具类型以及重要性. 本期文章将为你介绍 CI/CD 流水线安全的最佳实践. ✦ ✦ CI/CD 流水线是指由持续集成(Continuous Integrat ...