本文概述了使用 WinDbg 的一些必要步骤。app
第一步,你必须更改系统的配置使其可以生成 PDB 文件,包括 Release 版本。近期的 Visual C++ 编译器默认启用此配置,但早期某些版本编译器须要你手动开启此选项。保留每一个版本的 PDB 文件,这很重要!工具
第二步,你必须肯定生成 dump 文件的应用程序版本。当你本身生成了 MiniDumps(好比经过调用 MiniDumpWriteDump())的时候,最好在 MiniDump 的文件名里加上应用程序的完整版本号。固然,这须要有一个完善的版本控制机制,好比任何分支的任何编译都会更新版本号。ui
如今假设你已经获取了 dump 文件,你准确地知道生成 dump 文件的应用程序版本,以及该版本的 PDB 文件。debug
第三步,在你的代码库历史记录中找到该版本的源代码,放在一个单独目录。版本控制
如今你能够选择使用 WinDbg 或者 Visual C++ 来调试 dump 文件了。使用 Visual Studio 更加简单,可是 WinDbg 更增强大。大多数状况下 Visual Studio 的功能已经可以知足需求了。调试
若是使用 Visual Studio,你须要在 Visual Studio 中添加文件的方式打开 dump 文件:code
而后 debug dump 文件。若是全部的路径(源代码和 PDB 文件)都配置正确,那么你就可以调试到 crash 的地方,查看 call stack 等内容。blog
若是使用 WinDbg,你须要:get
.symfix
,这个过程可能须要一些时间.sympath+ c:\pdblocation
,将 "c:\pdblocation" 替换为你本身的 PDB 路径。注意 .sympath
和 +
之间不要有空格,不然可能会破坏步骤 3. 中的工做。.srcpath c:\app_build_1.0.100
,将 "c:\app_build_1.0.100" 替换为你本身的源代码路径。!analyze -v
。若是全部配置都是正确的,那么后面 WinDbg 就会运行到 crash 的位置,以后你就能够对应用程序进行深刻分析,这部份内容不在本文讨论范围以内。编译器