zoukankan      html  css  js  c++  java
  • windows设置程序崩溃转储

    设置崩溃处理函数

    #if (defined _WIN32)||(defined _WIN64)
    #include <windows.h>
    #include <Dbghelp.h>
    #include <tchar.h>
    //#pragma execution_character_set( "utf-8" )
    typedef BOOL(WINAPI* MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType, CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
    
    void CreateMinDump(struct _EXCEPTION_POINTERS* apExceptionInfo)
    {
        HMODULE mhLib = ::LoadLibrary(_T("dbghelp.dll"));
        MINIDUMPWRITEDUMP pDump = (MINIDUMPWRITEDUMP)::GetProcAddress(mhLib, "MiniDumpWriteDump");
    
        HANDLE  hFile = ::CreateFile(_T("core.dmp"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
            FILE_ATTRIBUTE_NORMAL, NULL);
    
        _MINIDUMP_EXCEPTION_INFORMATION ExInfo;
        ExInfo.ThreadId = ::GetCurrentThreadId();
        ExInfo.ExceptionPointers = apExceptionInfo;
        ExInfo.ClientPointers = FALSE;
    
        pDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);
        ::CloseHandle(hFile);
    }
    
    long   __stdcall   HandlerCrash(struct _EXCEPTION_POINTERS* apExceptionInfo)
    {
        DLOG(INFO) << "crashed!!!!!!!!!!!!!!!!!!!!!!!!!";
        CreateMinDump(apExceptionInfo);
        return EXCEPTION_CONTINUE_SEARCH;
    }
    #endif

    注册崩溃事件

    #if (defined _WIN32)||(defined _WIN64)
        SetUnhandledExceptionFilter(HandlerCrash);
    #endif
    MINIDUMPWRITEDUMP 不是线程安全的 有时可能无法生成转储文件


    通过配置注册表windows错误报告时限捕捉转储文件 wer

    reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps" /f
    reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumpshttpd.exe" /f
    reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumpshttpd.exe" /v DumpFolder /t REG_EXPAND_SZ /d "C:crashdumps" /f
    reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumpshttpd.exe" /v DumpType /t REG_DWORD /d "1" /f

    其中

    DumpType 设置1 未mindump   转储文件几m
          设置为2 为fulldump 转储文件几十m


  • 相关阅读:
    linux网络编程之扫盲
    当lov变化时得到lov变化的值
    动态设置OAMessageChoiceBean值
    RSA host key for HOST has changed and you have requested strict checking
    64位整数的编译错误
    CSS让内容水平居中(固定宽度)
    如何计算亮度值
    adb新参数支持Android 2.2安装到SD卡上
    NSDateFormatter formatting
    Win7系统下Safari不能打开网页的解决方法
  • 原文地址:https://www.cnblogs.com/wolbo/p/14868051.html
Copyright © 2011-2022 走看看