我的C++程序会抛出程序中未处理的异常,因此在 Debug模式下,VS会处理该异常,并显示一个窗口,显示发生未处理异常的事实。但是我可以查看未处理的异常吗?它的类型是什么,被抛出的对象内部是什么?

最佳答案

您可以尝试点击Break并进入。如果有任何代码方面的分析,VS将进入异常类的处理程序或构造函数。无论如何,这就是我在VS2010中所做的事情。

从这一点出发,如果您知道异常对象的地址,则应该能够将其粘贴到“监视”窗口中并强制转换为基本异常类(如果该异常不是系统异常,并且您有一个好的类(class)等级)。

附言
您可以拥有自己的未处理异常例程,以在其中设置断点。可以很简单:

// global scope
    LONG WINAPI my_unh_exc_hndlr(_EXCEPTION_POINTERS* excPtrs)
    {
        return EXCEPTION_CONTINUE_SEARCH; // Put a breakpoint here in IDE.
    }

// ... somewhere in the beginning of main()
    SetUnhandledExceptionFilter(my_unh_exc_hndlr);

每次遇到未处理的异常时应运行。

另一个程序随机崩溃?没有可用的资源?没问题。注入(inject)代码(小的DLL),以便在那里为您设置处理程序例程(除非您具有较少的特权)并进行调试。

关于c++ - VS2010如何在 Debug模式下捕获未处理的异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9513080/

10-11 02:42
查看更多