首页 > 其他 > 详细

程序崩溃处理

时间:2015-09-15 14:35:53      阅读:239      评论:0      收藏:0      [点我收藏+]
SetErrorMode() 函数控制 Windows 是否处理 指定类型的严重错误或使调用应用程序来处理它们。


  1. #include <Dbghelp.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #pragma comment(lib,"Dbghelp.lib")
  5. LONG WINAPI ExpFilter(struct _EXCEPTION_POINTERS *pExp)
  6. {
  7. time_t now;
  8. time(&now);
  9. char name[100] = { 0 };
  10. sprintf_s(name, "%d.dmp", now);
  11. HANDLE hFile = CreateFileA( name,GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  12. if (INVALID_HANDLE_VALUE != hFile)
  13. {
  14. MINIDUMP_EXCEPTION_INFORMATION einfo;
  15. einfo.ThreadId = ::GetCurrentThreadId();
  16. einfo.ExceptionPointers = pExp;
  17. einfo.ClientPointers = FALSE;
  18. ::MiniDumpWriteDump(
  19. ::GetCurrentProcess(),
  20. ::GetCurrentProcessId(),
  21. hFile,
  22. MiniDumpWithFullMemory,
  23. &einfo,
  24. NULL,
  25. NULL);
  26. ::CloseHandle(hFile);
  27. }
  28. return EXCEPTION_EXECUTE_HANDLER;
  29. }
  30. long __stdcall ExpFilter1(_EXCEPTION_POINTERS* excp)
  31. {
  32. char buf[1024] = { 0 };
  33. sprintf_s(buf, "ExceptionAddress %x \n NumberParameters %x \n ExceptionCode %x \n",
  34. excp->ExceptionRecord->ExceptionAddress
  35. , excp->ExceptionRecord->NumberParameters
  36. , excp->ExceptionRecord->ExceptionCode);
  37. MessageBox(0, buf, "error", MB_OK);
  38. return EXCEPTION_EXECUTE_HANDLER;
  39. }

SetUnhandledExceptionFilter(ExpFilter); 

 




程序崩溃处理

原文:http://www.cnblogs.com/wxf101/p/4810150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!