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

  • 相关阅读:
    【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息
    本学习笔记TCP/IP传输协议
    iOS_23_undress Girl
    uva 1560
    IOS开发-Swift新语言初见
    39个让你受益的HTML5教程
    ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录
    怎样使用SetTimer MFC 够具体
    ArcGIS API for Silverlight 编辑Geometry
    几种更新(Update语句)查询的方法
  • 原文地址:https://www.cnblogs.com/cutepig/p/892175.html
Copyright © 2011-2022 走看看