• vs2010 dump 调试


    1)exception_handler.h

    #pragma once
    #include <dbghelp.h>   
    #include <shellapi.h>   
    #include <shlobj.h>
    
    #pragma comment( lib, "DbgHelp")
    
    static LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo)
    {
        HANDLE lhDumpFile = CreateFile(L"DumpFile.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL);
        MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;
        loExceptionInfo.ExceptionPointers = ExceptionInfo;
        loExceptionInfo.ThreadId = GetCurrentThreadId();
        loExceptionInfo.ClientPointers = TRUE;
    
        MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL);
    
        CloseHandle(lhDumpFile);
    
        ::ShellExecuteW(NULL, NULL, L"BugReport.exe", NULL, NULL, SW_NORMAL);
    
        return EXCEPTION_EXECUTE_HANDLER;
    }

    2) 主程序中包含该头文件, 并在主函数开头调用:

    SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);

    注意, 该头文件尽量放在最前。 【放在后面编译时可能会出dbghelp.h中的各种错误】

    3) 运行。 异常时会生成DumpFile.dmp

    4) vs2010。 直接双击dmp文件会在vs2010中显示dump的summary, 右上方的“操作”栏会出现在本机调试字样。 调试即可。

    【dmp、pdb、exe需放在同一目录下】

    5) bugreport.exe读取本地文件、上传

  • 相关阅读:
    最大流基础
    转一篇写期望的日志
    poj3267The Cow Lexicon(dp)
    poj3026Borg Maze(bfs+MST)
    poj2226Muddy Fields(二分图的最小点覆盖)
    poj1035Spell checker(字符串模拟)
    poj1422Air Raid(最小路径覆盖)
    poj3020Antenna Placement(最小路径覆盖)
    [JSOI2009]火星藏宝图
    [SHOI2007]书柜的尺寸
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/2997439.html
Copyright © 2020-2023  润新知