본문 바로가기
Develope/c++, mfc

[C++/MFC] DumpFile(덤프파일) 만드는법, (MiniDumpWriteDump, SetUnhandledExceptionFilter)

by 개발자도구 2022. 10. 12.
반응형

Header 

stdafx.h or pch.h

#include <iostream>
#include <Windows.h>
#include <DbgHelp.h>

#pragma comment(lib, "Dbghelp.lib")
LONG WINAPI ExceptionCallBack(EXCEPTION_POINTERS* exceptionInfo) 
{
    MINIDUMP_EXCEPTION_INFORMATION info = { 0 };
    info.ThreadId = ::GetCurrentThreadId(); // Threae ID 설정
    info.ExceptionPointers = exceptionInfo; // Exception 정보 설정
    info.ClientPointers = FALSE;

    // 덤프 파일 생성
    std::wstring strtemp(L"dumpfilename.dmp");
    HANDLE hFile = CreateFile(strtemp.c_str(), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &info, NULL, NULL);

    return 0L;
}

 

Cpp File

SetUnhandledExceptionFilter(ExceptionCallBack); //Exception 보다 먼저 선언
SetUnhandledExceptionFilter 가 등록 전 Exception이 발생 시 Dump 파일이 나타나지 않을 수 있으니 주의하자.

 

코드 등록 후 사용하면 실행 파일 경로에 ***.dmp 파일을 확인 할 수 있다.

 

해당 파일은 Windbg 를 통해 쉽게 볼 수 있다.

반응형

댓글