您的位置:首页 > 其它

程序全局异常捕获

2010-08-18 21:46 501 查看
SetUnhandledExceptionFilter(MyUnFilter);

LONG WINAPI MyUnFilter(PEXCEPTION_POINTERS lpExceptionInfo)
{
 static int s_SigCount = 0;

 DWORD dwExceptCode = lpExceptionInfo->ExceptionRecord->ExceptionCode;
 LONG  lResult = EXCEPTION_CONTINUE_SEARCH;

 if (dwExceptCode == EXCEPTION_ACCESS_VIOLATION)
 {
  g_runLog.Write("Access violation caught by MyUnFilter, addr=0x%08x", lpExceptionInfo->ExceptionRecord->ExceptionAddress);
  ++s_SigCount;
  // test case to keep this from going on forever (since we're not
  // fixing the AV)
  if (s_SigCount < 2)
   lResult = EXCEPTION_CONTINUE_EXECUTION;
  else
   lResult = EXCEPTION_EXECUTE_HANDLER;
 }
 else
 {
  lResult = EXCEPTION_CONTINUE_SEARCH;
 }
 return lResult;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息