做什么

之前有一次梦中所得,既然可以让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. 设备唯一标识方法(Unique Identifier):如何在 Windows 系统上获取设备的唯一标识

    原文地址 设备唯一标识方法(Unique Identifier):如何在 Windows 系统上获取设备的唯一标识 zz 唯一的标识一个设备是一个基本功能,可以拥有很多应用场景,比如软件授权(如何保证 ...

  2. SpringBoot整合Liquibase

    1.是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更.它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化 ...

  3. MySQL账号锁定与解锁

    MySQL提供了多种方法来锁定解锁账号,下面是几种常用的方法: 1.使用ALTER语句锁定账号 锁定账号: ALTER USER 'username'@'localhost' ACCOUNT LOCK ...

  4. vmware虚拟机 linux 本地yum源,网卡配置ens33,防火墙selinux

    1.挂载镜像文件,CentOS-7-x86_64-DVD-1804.iso,并且要处于连接状态 #光盘挂载至/mntmount /dev/sr0 /mnt #备份yum源文件cd /etc/yum.r ...

  5. MD5 or Bcrypt?

    MD5 or Bcrypt? 摘要 首先是一个错误的认识观念问题,很多人觉得MD5是一个加密算法.不然,他实则是一种摘要算法,也可以叫哈希函数.他的作用是将目标文本转换成具有相同长度.不可逆的杂凑字符 ...

  6. java漏洞学习平台搭建

    java漏洞平台搭建 项目地址 : https://github.com/j3ers3/Hello-Java-Sec 配置mvn 先配置一下mvn,下载后解压 proxychains wget htt ...

  7. JNA入门(一)

    JNA入门,代码在github写得明明白白:https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md 一. ...

  8. 《RAPL: A Relation-Aware Prototype Learning Approach for Few-Shot Document-Level Relation Extraction》阅读笔记

    代码   原文地址   预备知识: 1.什么是元学习(Meta Learning)? 元学习或者叫做"学会学习"(Learning to learn),它是要"学会如何学 ...

  9. LFS - Linux From Scratch 从零开始全记录 - 1 准备篇

    上次折腾 LFS 已经是好几年前了,只记得最后用 VMware 引导成功了,好多技术细节已经不记得了.趁着最近有空,再来折腾一次.这一次用的一台新的 Win10 PC,目标是在一个 U 盘上构建 LF ...

  10. SHA加密解密

    一.概述 SHA(Secure Hash Algorithm,安全哈希算法)是一类广泛应用于加密领域的算法,主要用于数据完整性校验和加密认证.SHA算法首次出现在1993年,由美国国家安全局(NSA) ...