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

  • 相关阅读:
    笔记35 跨重定向请求传递数
    判断邮箱的正则表达式
    按钮
    async await 的用法
    笔记34 Spring MVC的高级技术——处理multipart形式的数据
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees,Unique Binary Search Trees II
    Validate Binary Search Tree
    Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/cutepig/p/892175.html
Copyright © 2011-2022 走看看