mfc生成dump文件的几行代码

#include <DbgHelp.h>
#pragma comment(lib, "Dbghelp.lib")

LONG WINAPI ExpFilter(struct _EXCEPTION_POINTERS *pExpInfo)
{
    CString csAppDirectory = ::GetModuleFileDirectory();
    CString csDumpDirectory;
    SYSTEMTIME tm;
    GetLocalTime(&tm);

    TCHAR pszText[512] = {0};
    _stprintf(pszText, _T("\\_Err%d%02d%02d%02d%02d%02d_.dmp"), tm.wYear, 
        tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond);

    csDumpDirectory = csAppDirectory + _T("\\Crash");
    ::CreateMultipleDirectory(csDumpDirectory);
    CString csDumpFile;
    csDumpFile.Format(_T("%s%s"), csDumpDirectory, pszText);

    HANDLE hFile = CreateFile(csDumpFile, 
        GENERIC_WRITE, 
        0, 
        NULL, 
        CREATE_ALWAYS, 
        FILE_ATTRIBUTE_NORMAL, 
        NULL);

    if(INVALID_HANDLE_VALUE != hFile)
    {
        MINIDUMP_EXCEPTION_INFORMATION einfo;
        einfo.ThreadId            = GetCurrentThreadId();
        einfo.ExceptionPointers    = pExpInfo;
        einfo.ClientPointers    = FALSE;

        MiniDumpWriteDump(
            GetCurrentProcess(), 
            GetCurrentProcessId(), 
            hFile, 
            MiniDumpNormal, 
            &einfo, 
            NULL, 
            NULL);

        CloseHandle(hFile);
    }

    MessageBox(NULL, _T("软件即将停止工作,给您带来不便深表抱歉!\r\n\
                      "),
                        _T("崩溃了"), MB_OK|MB_ICONERROR);

    return EXCEPTION_EXECUTE_HANDLER;
}

main函数中调用,或软件入口调用

    ::SetUnhandledExceptionFilter(ExpFilter);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值