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

  • 相关阅读:
    Silverlight项目开发准则
    WCF序列化65536大小限制的问题
    自定义的asp.net翻页控件
    解决Process因缓冲区满而导至进程阻塞的办法
    选择适合的Silverlight通信技术
    深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入)
    25个强大的 jQuery 砌体网页设计作品
    Silverlight 4常用StringFormat格式总结
    C# 发送邮件内容嵌入图片
    如何解决Silverlight跨域访问安全性问题
  • 原文地址:https://www.cnblogs.com/cutepig/p/892175.html
Copyright © 2011-2022 走看看