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, 可以看调用堆栈.
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, 可以看调用堆栈.
相关文章推荐
- Android_程序未处理异常的捕获与处理
- iOS捕获异常,常用的异常处理方法
- Zend Framework 中 MVC 异常的捕获与处理
- vbscript 捕获异常的处理
- .Net 下未捕获异常的处理
- 异常处理&创建日志文件
- iphone异常捕获处理
- 第6章 异常的捕获及处理
- java之异常捕获及处理
- java中的异常捕获及处理
- asp.net和ajax未捕获异常处理机制
- C#未捕获异常处理方法
- 【C++】try 语句捕获异常,catch子句处理异常
- 在SilverLight中创建和处理异常
- Java 异常的捕获及处理(异常处理流程)
- WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
- asp.net捕获全局未处理异常的几种方法
- WPF处理未捕获的异常
- nodejs 捕获未处理异常
- jquery------捕获异常处理