如何使用 Dump 文件?
引言
本文概述了使用 WinDbg 的一些必要步骤。
准备工作
第一步,你必须更改系统的配置使其能够生成 PDB 文件,包括 Release 版本。近期的 Visual C++ 编译器默认启用此配置,但早期某些版本编译器需要你手动开启此选项。保留每个版本的 PDB 文件,这很重要!
第二步,你必须确定生成 dump 文件的应用程序版本。当你自己生成了 MiniDumps(比如通过调用 MiniDumpWriteDump())的时候,最好在 MiniDump 的文件名里加上应用程序的完整版本号。当然,这需要有一个完善的版本控制机制,比如任何分支的任何编译都会更新版本号。
现在假设你已经获取了 dump 文件,你准确地知道生成 dump 文件的应用程序版本,以及该版本的 PDB 文件。
第三步,在你的代码库历史记录中找到该版本的源代码,放在一个单独目录。
开始调试
现在你可以选择使用 WinDbg 或者 Visual C++ 来调试 dump 文件了。使用 Visual Studio 更加简单,但是 WinDbg 更加强大。大多数情况下 Visual Studio 的功能已经能够满足需求了。
如果使用 Visual Studio,你需要在 Visual Studio 中添加文件的方式打开 dump 文件:

然后 debug dump 文件。如果所有的路径(源代码和 PDB 文件)都配置正确,那么你就能够调试到 crash 的地方,查看 call stack 等内容。
如果使用 WinDbg,你需要:
- 打开 WinDbg 工具
- 打开 dump 文件(默认是 Ctrl + D)
- 告诉 WinDbg 加载正确的 MicroSoft symbol 文件,命令:
.symfix,这个过程可能需要一些时间 - 告诉 WinDbg 加载 程序的 PDB 文件,命令:
.sympath+ c:\pdblocation,将 "c:\pdblocation" 替换为你自己的 PDB 路径。注意.sympath和+之间不要有空格,否则可能会破坏步骤 3. 中的工作。 - 告诉 WinDbg 源代码的位置,命令:
.srcpath c:\app_build_1.0.100,将 "c:\app_build_1.0.100" 替换为你自己的源代码路径。 - 告诉 WinDbg 可以开始分析 dump 文件了,命令:
!analyze -v。
如果所有配置都是正确的,那么后面 WinDbg 就会运行到 crash 的位置,之后你就可以对应用程序进行深入分析,这部分内容不在本文讨论范围之内。
引用
如何使用 Dump 文件?的更多相关文章
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- gdb调试常用实用命令和core dump文件的生成
1.生成core dump文件的方法: $ ulimit -c //查看是否为0 如果为0 $ ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxx ...
- 使用dbghelp生成dump文件以及事后调试分析
前言 在产品的实际应用环境中,如果我们的程序在客户那里出现了问题,例如程序异常了,而这个时候的现象又不能还原或者很难还原重现,那么只有使用dump文件来保存程序的当前运行信息,例如调用堆栈等,同时使用 ...
- 蓝屏 Dump文件分析方法
WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...
- 调试SQLSERVER (一)生成dump文件的方法
调试SQLSERVER (一)生成dump文件的方法 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置调试SQLSERVER (三)使用Windbg调试SQLSERVER ...
- Windows Phone App的dump文件实例分析- System.ExecutionEngineException
前言 在开始这篇文章之前我们先来讲讲如何从高度优化的Release版的Dump中找到正确的异常上下文地址,并手动恢复异常发生的第一现场. 1. 什么是异常上下文 简单来说,在windows体系的操作系 ...
- linux下生成core dump文件方法及设置
linux下生成core dump文件方法及设置 from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...
- linux 下如何打开core dump文件开关
dump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息.在window下,要能生成dump文件,需要自己编写相应的代码.不过现在网上可以找到相应的代码,只要把它下载后然后加到 ...
- 【转】SVN的dump文件导入
转载地址:http://erniu.sz.blog.163.com/blog/static/11517292220103282813176/ 把SVN的dump文件导入SVN数据库的方法: 在SVN ...
随机推荐
- dotnet ConditionalWeakTable 的底层原理
在 dotnet 中有一个特殊的类,这个类能够做到附加属性一样的功能.也就是给某个对象附加一个属性,当这个对象被回收的时候,自然解除附加的属性的对象的引用.本文就来聊聊这个类的底层原理 小伙伴都知道弱 ...
- SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心
服务的提供者和消费者 服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用. 当一个服务通过远程调用去调用另一个 ...
- blocks (单调栈)
题目描述 解析 对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平 均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于 ...
- iPad 远程控制 Mac 电脑远程办公的终极解决方案
作为安全技术人员来说,用 iPad 远程控制 Mac 电脑,在我看来是一件很酷的事情! 首先吐槽一下自己为什么会有这个奇怪的想法,原因是因为,目前我有一个16寸的mac,我每天下班的第一个动作就是先把 ...
- windows 10安装python2.7
一.官网下载 1.百度搜索"python"或者点击这个网址下载https://www.python.org/downloads/release/python-2716/ pytho ...
- C 语言编程 — 输入/输出与文件操作
目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...
- 一篇文章让你读懂Java异常栈信息
一. 基本的异常打印 public class Test { public static void main(String[] args) { fun1();//第4行 } public static ...
- Java8新特性default关键字,引出Java多继承问题
概述 最近在看JDK集合的源码时,在Collection接口中发现了default关键字,并且惊奇的发现接口中的方法居然包含方法体,这顿时让我产生兴趣,为此我也稍微研究了一下default关键字. 很 ...
- 【分享】FFmpeg桌面神器,集多种功能于一身,超级好用,不用命令行!
在媒体处理上,市面上有很多软件可以选择,在众多软件里面 FFmpeg 是比较独特的一款,直接选择 FFmpeg 硬核命令行工具的朋友相对较少,大多时候只是被集成在各样的软件里,如果单独拿出来使用,不少 ...
- c#动态执行脚本的3种方式详解
1.使用Roslyn编译器 2.使用IronPython或IronRuby 3.使用JavaScript引擎 在C#中,可以使用一些第三方库或内置类库实现动态执行脚本的功能.以下是几个常用的方案: 1 ...