Dump文件的抓取
在WindowsXP下可以使用系统自带的drwtsn32.exe(华生医生)进行Dump文件抓取,但是在Vista以后的Windows版本中不再包含工具,这里主要说明使用Windbg截取的情形。
等待问题发生时抓取:
1) 将Windbg Attach到发生问题的进程上,之后通过.Dump抓取Dump文件;
2) adplus.vbs/adplus.exe –hang 抓取相关进程的dump 文件。
无需等待,待问题发生时自动抓取:
1) 在问题发生的之前使用adplus.vbs/adplus.exe –crash监控相关进程的运行,在Crash或者退出的情况下,系统会自动抓取Dump文件;
2)使用windbg –I ,将Windbg设置为默认即时调试器,问题发生时会自动弹出,并抓取Dump文件。
任意抓取:
1) 使用windbg -c,直接编辑相关命令或者使用脚本编辑相关命令;
2) 使用adplus.vbs/adplus.exe -c <ConfigFile>,从配置文件中获取相关命令。
Dump文件的分析
使用VS环境进行分析
1) 打开Dump文件
File-> Open-> Project/Solution:找到待分析的Dump文件打开。
2) 指定调试符号(PDB)文件路径
Tools->Option->Debugging->Symbos,选定Pdb文件所在的路径,如下图所示
3) 指定源代码路径
在Solution Explorer中选中Solution右键,在弹出菜单中选择“Property”,Common Properties->Debug Source Files,选择源代码所在路径,如下图所示:
之后点击Debug,即可定位到崩溃的地方,注意这里所选择的路径为sln文件(解决方案文件)所在路径,而非vcproj文件(工程文件)所在的路径。
使用Windbg进行分析
1) 指定调试符号文件路径
File->Symbol File Path,选择符号文件路径,如下图所示:
2) 指定源代码所在路径
File->Source File Path,选择符号文件路径,如下图所示:
注意这里所选择的路径为sln文件(解决方案文件)所在路径,而非vcproj文件(工程文件)所在的路径。
3) 打开Dump文件
File->Open Crash Dump,选择对应的Dump文件即可。
如果程序运行和源代码编译在同一台计算机上,且源代码文件和符号文件与应用程序编译时相比没有发生变化,
直接进行3)打开dmp文件即可调试。