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等内容。