保存crash的dump文件

1.首先包含 头文件
#include <dbghelp.h>
2.编写自己的 unhandle exception函数
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *lpTopLevelExceptionFilter)
{
if( IDYES == ::MessageBox(0,"Click yes to save crash dump file, click No to cancel it", "Crash Report",MB_YESNO) )
{
//生成 mini crash dump
BOOL bMiniDumpSuccessful;
TCHAR* szFileName = "c://test.dmp";
TCHAR* szVersion = "v1.0";
DWORD dwBufferSize = MAX_PATH;
HANDLE hDumpFile;
MINIDUMP_EXCEPTION_INFORMATION ExpParam;
hDumpFile = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, 
FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
ExpParam.ThreadId = GetCurrentThreadId();
ExpParam.ExceptionPointers = lpTopLevelExceptionFilter;
ExpParam.ClientPointers = TRUE;
bMiniDumpSuccessful = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), 
hDumpFile, MiniDumpWithDataSegs, &ExpParam, NULL, NULL);
}
return EXCEPTION_EXECUTE_HANDLER;
}
3在程序的开始处注册自己的回调函数
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
4. 在工程中链接dbghelp.lib
google brakpad可以保存dump的文件,也可以进行多进程间通过命名管道来保存dump文件,但是一直没有试成功。
5. 打开windbg,然后选择“open crash dump”,就可以打开dmg文件了
6.设置好源文件路径,输入.ecxr就能看到crash的地方了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值