如何能像QQ那样,程序出现异常时自动捕获异常信息并显示,比如能够显示异常指令地址、模块信息。谢谢!

解决方案 »

  1.   

    codeproject 上面有一共4个部分,这是第一部分
    http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx你只要把它的cpp文件加到你的工程里就行了
      

  2.   

    MiniDumpWriteDump FunctionWrites user-mode minidump information to the specified file.
    Syntax
    BOOL WINAPI MiniDumpWriteDump(
      __in  HANDLE hProcess,
      __in  DWORD ProcessId,
      __in  HANDLE hFile,
      __in  MINIDUMP_TYPE DumpType,
      __in  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
      __in  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
      __in  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
    );
    就是这个,请Google之
      

  3.   

    分两个步骤:
    1.异常过滤,这样,当程序出现异常时,会进入异常过滤处理程序。类似qq弹出错误提示窗口。
    2.程序转储,在错误处理例程中,进行程序的转储,MiniDumpWriteDump就可以。其实还有后续步骤:
    生成的dmp文件,使用windbg,或高版本的vsstudio,可以进行调试。(前提是,你保留有对应版本的符号)
      

  4.   

    捕获异常最关键的API: SetUnhandledExceptionFilter
    下面是相关文章
    http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx 
    http://www.codeproject.com/KB/debug/XCrashReportPt2.aspx 
    http://www.codeproject.com/KB/debug/XCrashReportPt3.aspx 
    http://www.codeproject.com/KB/debug/XCrashReportPt4.aspx