如何使用 Dump 文件?

引言

本文概述了使用 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

Dump file page in VS

而后 debug dump 文件。若是全部的路径(源代码和 PDB 文件)都配置正确,那么你就可以调试到 crash 的地方,查看 call stack 等内容。blog

若是使用 WinDbg,你须要:get

  1. 打开 WinDbg 工具
  2. 打开 dump 文件(默认是 Ctrl + D)
  3. 告诉 WinDbg 加载正确的 MicroSoft symbol 文件,命令:.symfix,这个过程可能须要一些时间
  4. 告诉 WinDbg 加载 程序的 PDB 文件,命令:.sympath+ c:\pdblocation,将 "c:\pdblocation" 替换为你本身的 PDB 路径。注意 .sympath+ 之间不要有空格,不然可能会破坏步骤 3. 中的工做。
  5. 告诉 WinDbg 源代码的位置,命令:.srcpath c:\app_build_1.0.100,将 "c:\app_build_1.0.100" 替换为你本身的源代码路径。
  6. 告诉 WinDbg 能够开始分析 dump 文件了,命令:!analyze -v

若是全部配置都是正确的,那么后面 WinDbg 就会运行到 crash 的位置,以后你就能够对应用程序进行深刻分析,这部份内容不在本文讨论范围以内。编译器

引用

https://stackoverflow.com/questions/734272/how-to-use-windbg-to-analyze-the-crash-dump-for-vc-application

相关文章
相关标签/搜索