代码
#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"LYSM", MB_OK);
wstring strDumpFileName = L"C:\\LYSM.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;
}
效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906193951828.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NpbW9uNzk4,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906194010175.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NpbW9uNzk4,size_16,color_FFFFFF,t_70#pic_center)
拖入 windbg 分析
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906194203546.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NpbW9uNzk4,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906194134250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NpbW9uNzk4,size_16,color_FFFFFF,t_70#pic_center)