#include <windows.h> #include <DbgHelp.h> #include<string.h> #include<iostream> #pragma comment( lib, "Dbghelp.lib" ) using namespace std;
void CreateDumpFile(LPCWSTR lpstrDumpFilePathName, EXCEPTION_POINTERS* pException) { HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
MINIDUMP_EXCEPTION_INFORMATION dumpInfo; dumpInfo.ExceptionPointers = pException; dumpInfo.ThreadId = GetCurrentThreadId(); dumpInfo.ClientPointers = TRUE;
MiniDumpWriteDump( GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL );
CloseHandle(hDumpFile); }
LONG CrashHandler(EXCEPTION_POINTERS* pException) { MessageBox(NULL, L"崩溃了", L"Lyshark", MB_OK);
wstring strDumpFileName = L"C:\\lyshark.dmp";
CreateDumpFile(strDumpFileName.data(), pException);
return EXCEPTION_EXECUTE_HANDLER; }
int main() { SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CrashHandler);
int i = 13; int j = 0; int m = i / j;
getchar(); return 0; }
|