您的位置:首页 > 其它

win32创建异常捕获处理

2013-05-24 17:56 351 查看
SetUnhandledExceptionFilter(CustomFilter);

LONG __stdcall CustomFilter(EXCEPTION_POINTERS* pep)

{

// 生成dump文件名

CString strDumpFile;

CTime tCur = CTime::GetCurrentTime();

strDumpFile.Format(_T("%sdump files\\_%s.dmp"), GetAppPath(), tCur.Format(_T("%Y%m%d%H%M%S")));

// 创建dump文件

CreateMiniDump(pep, strDumpFile);

RunCrashReporter(strDumpFile);

DWORD dwProgressID = GetCurrentProcessId();

HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProgressID);

if (INVALID_HANDLE_VALUE != hProcess)

{

::TerminateProcess(hProcess, -1);

::CloseHandle(hProcess);

}

return EXCEPTION_EXECUTE_HANDLER;

}

void RunCrashReporter( LPCTSTR lpDumpFile )

{

CString strExcute ;

strExcute.Format( _T("%sCrashLog.exe"),GetAppPath() );

ShellExecute(NULL, _T("open"), strExcute, strCommand, NULL, SW_SHOWNORMAL);

}

windbg常用cmd: !analyze -v

之后用lm命令看是否加载成功pdb文件.

STACK_TEXT, 可以看调用堆栈.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: