使用windbg分析dump文件
使用windbg分析dump文件的步骤。
- 准备工作。
- 打开dump文件。
- 指定符号表文件的路径。
- 指定可执行文件的路径。
- 指定源码文件的路径。
- 在windbg的命令行,输入并执行如下命令
.reload
,重新加载前述数据文件。!analyze -v
,分析dump文件。kbn
,得到崩溃时的调用栈信息。.ecxr
,打开栈顶关联的源码。
其它
-
如何安装windbg?
当前windbg整合在了Windows SDK里,所以可以通过访问windows-sdk,通过下载、安装Windows SDK来安装windbg。 -
如何生成dump文件?
目前已知的方法,有如下几种:- 通过任务管理器,右键选中进程之后,选择创建转储文件。参考Windows下dump文件生成与分析。
- 配置注册表,参考Windows下dump文件生成与分析。
- 使用windbg等调试器,挂载到目标进程,然后使用
.dump
命令生成dump文件。 - 使用管理员权限打开cmd.exe,执行
windbg -I
,可以将windbg注册为系统默认调试器,当系统中的进程出现崩溃现象时,将自动启动windbg并挂载至相应的进程中,此时可以执行.dump
命令来生成dump文件。
-
符号表文件非常关键,在构建软件时,无论debug/release,均指定编译器输出pdb文件。
- 对于稳定复现的问题,这时使用Visual Studio IDE来调试,非常方便、高效。
- 对于很难复现、或者没有找到复现条件的问题,事后分析dump文件,搭配pdb文件,同样有助于分析问题。
-
debug/release构建模式对分析dump文件的影响。
- debug方式构建的程序,编译器做的优化相对较少,分析dump文件时可以方便的查看各个变量的取值。
- release方式构建的程序,编译器做了大量的优化,分析dump文件时,可能无法看到具体变量的值,分析难度可能比较大。
参考资料
本文来自博客园,作者:jackieathome,转载请注明原文链接:https://www.cnblogs.com/jackieathome/p/17937695