Debug Diagnostic Tool(DebugDiag)
The Debug Diagnostic Tool (DebugDiag) is designed to assist in troubleshooting issues such as hangs, slow performance, memory leaks or fragmentation, and crashes in any user-mode process.
DebugDiag主要用来分析进程(用户态)的内存泄漏、崩溃等问题。
利用DebugDiag监控程序的崩溃时生成.dmp文件
建立监控规则
Debug Diagnostic Tool可以选择不同的规则来进行dump文件。可以根据程序崩溃时捕获dump文件,也可以根据性能指标来进行捕获,如CPU过高,死锁,HTTP响应时间过程等参数
生成dump文件
当被监控程序崩溃时, DebugDiag会自动生成dump文件。
写了一个简单的MFC的崩溃测试程序。
点击Crash Test按钮后,调用如下代码:
// 测试崩溃的代码
void CpxMFCTestDlg::OnBnClickedButton1()
{
// test for crash begin
char *szTest = NULL;
strcpy(szTest, "Hello World");
// test for crash end
}
点击该按钮之后,DebugDiag会在C:\Dump下生成dump文件。
利用windbg对dump文件进行分析
设置了Symbol File Path和Source File Path之后,即可调用!analyze -v
命令对崩溃文件进行分析:
DebugDiag手动保存dump文件
也可以找到对应的进程,通过如下方法进行捕获。此种方式获取的dump文件放到C:\Program Files\DebugDiag\Logs\Misc下。
References:
http://www.pc6.com/softview/SoftView_102657.html
https://www.microsoft.com/en-us/download/details.aspx?id=26798
http://www.cnblogs.com/gmplayer/p/3220724.html