就好像IE如果异常关闭,会弹出一个提示是否上传错误报告(dump文件)到微软技术中心一样,
这个dump文件就是程序当掉的时候的堆栈信息。我想问的是:
1)怎么捕捉所有未处理的异常?
2)怎样生成dump文件?

解决方案 »

  1.   

    //DUMP文件
    LONG WINAPI MyUnhandledExceptionFilter( _EXCEPTION_POINTERS *ExceptionInfo )
    {
    HANDLE lhDumpFile = CreateFile(_T("DumpFile_SIM_Server.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);
    return EXCEPTION_EXECUTE_HANDLER;
    }
      

  2.   

    在初始化的时候调用SetUnhandledExceptionFilter(&MyUnhandledExceptionFilter);
    记得还有两句#include <DbgHelp.h>#pragma comment(lib , "DbgHelp.lib")
      

  3.   

    找到那个链接了... 
    这里最清楚
    http://blog.csdn.net/vagrxie/archive/2009/08/01/4398721.aspx