如果使用WinDbg分析崩溃产生的dump文件

WinDbg版本:
    WinDbg Preview
    Debugger client version: 1.2206.19001.0
    Debugger engine version: 10.0.25136.1001

1. 设置符号加载路径
    File->Settings->Debugging settings->Debugging paths->Symbol path
    增加你要调试的dll及pdb文件所在目录。

2. 打开dump文件
    直接拖入dump文件或通过File->Start debugging->Open dump file菜单打开。

3. 自动分析异常
    !analyze -v
    如果STACK_TEXT部分有提示"WARNING: Stack unwind information not available. Following frames may be wrong.",请相信它不是开玩笑的,真的很有可能是不准的,这也说明了pdb文件没有被加载。

4. 手动加载要调试的dll
    .reload /f "dll路径XXX.dll"
    如果无任何提示或提示"*** WARNING: Unable to verify timestamp for XXX.dll",则按下面步骤打开noisy模式。
    
5. 打开noisy模式
   !sym noisy
    提示"noisy mode - symbol prompts on"则说明打开成功

6. 手动重新加载dll
    .reload /f "XXX.dll"
    检查输出的DBGHELP信息,如果指示你要调试的dll对应的pdb文件找不到,则要比较DBGHELP所显示的pdb名字与你磁盘上的文件名是否一致,如果不一致则需要重命名文件至一致。重命名之后再次执行本步骤。
    如果名字一致,符号加载路径也设置无误,则要确认pdb与dll版本是否一致(即是否同时生成)。
    
    *如果pdb文件被成功加载,它会被缓存至"C:\ProgramData\Dbg\sym\XXX.pdb\<GUID>\XXX.pdb"。
    
7. 再次自动分析异常
    !analyze -v
    确认STACK_TEXT部分中你要调试的dll所对应部分不再在"WARNING: Stack unwind information not available. Following frames may be wrong."之后。
    查看后面的FAULTING_SOURCE_FILE与FAULTING_SOURCE_LINE_NUMBER等内容。


版权声明:本文为u010993639原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。