C/C++ Windows崩溃生成调试文件dmp

26 阅读1分钟

2024-03-29 00:41:05

#include <windows.h>
#include <Dbghelp.h>
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{

    //创建 Dump 文件
    HANDLE hDumpFile = CreateFile("crash.dmp",
                                  GENERIC_WRITE,
                                  0,  // 不共享
                                  NULL,  // 默认安全描述符
                                  CREATE_ALWAYS,  // 如果文件存在,则覆盖
                                  FILE_ATTRIBUTE_NORMAL,  // 文件属性
                                  NULL);
    if (hDumpFile != INVALID_HANDLE_VALUE)
    {
    //Dump信息
    MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
    dumpInfo.ExceptionPointers = pException;
    dumpInfo.ThreadId = GetCurrentThreadId();
    dumpInfo.ClientPointers = TRUE;

    //写入Dump文件内容
    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
    }
    return EXCEPTION_EXECUTE_HANDLER;
}
int main() {

   SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);
   int a=0;
   int b=100/a;
}