zoukankan      html  css  js  c++  java
  • 关于VC异常捕获的一个问题:

    关于VC异常捕获的一个问题:
    发信站: 水木社区 (Thu Sep 13 18:25:57 2007), 站内

    关于VC异常捕获的一个问题:
    在MFC中如何用一个函数捕获所有异常,在有异常的时候能转到自己的处理程序,比如显示程序的当前堆栈及寄存器信息。
    现在的问题是:
    1.我发现try语句会漏掉一些异常
    2.MFC中异常我只知道在每个相关函数中加入异常捕获的代码,感觉这种方式太麻烦了。
    我就想就修改一处地方便可以捕获所有异常,请问该怎么做呢?
    多谢!

    处理结构化异常SetUnhandledExceptionFilter    
    先在程序初始化的时候 设置 回调函数,回调函数对应有处理程序,处理程序会把dump到的内存堆栈保存下来。

    然后用该堆栈就可调试了。

    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPTSTR    lpCmdLine,
                         int       nCmdShow)
    {
        hInst = hInstance;
        ::SetUnhandledExceptionFilter(UEFilter);
    }

    LONG WINAPI UEFilter(PEXCEPTION_POINTERS ExceptionInfo)
    {
        // make up crash handler app name
        char szFileName[_MAX_PATH];
        ::GetModuleFileName(NULL, szFileName, _MAX_PATH);

        std::string strFileName;
        std::string strFilePath;
        ::SplitFileName(szFileName, strFileName, strFilePath);

        strFilePath += "CrashHandler.exe";

        // make up share memory name

        DWORD dwTick = ::GetTickCount();
        char szMapFileName[256];
        _snprintf(szMapFileName, 256, "%s%d", strFileName.c_str(), dwTick);

        CrashAdapter::Handle(strFilePath.c_str(), szMapFileName, ExceptionInfo);

        return EXCEPTION_EXECUTE_HANDLER;
    }


    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1566035

  • 相关阅读:
    【EF学习笔记05】----------操作内存中的数据
    【EF学习笔记05】----------DBContext基础查询
    【EF学习笔记04】----------EF简单增删改查
    【EF学习笔记03】----------使用原生Sql语句
    EntityFramework追踪Sql语句
    博客园自定义样式(标题 h1 h2 h3)
    SQLserver2012 修改数据库架构
    IIS7 配置URL_REWRITE
    maven项目使用mybatis-generator自动生成代码
    myeclipse关闭properties文件自动转义
  • 原文地址:https://www.cnblogs.com/cutepig/p/892175.html
Copyright © 2011-2022 走看看