我正在寻找 MS VC++ 中的答案。
在调试大型 C++ 应用程序时,不幸的是,它大量使用了 C++ 异常。有时我比我真正想要的晚一点才发现异常。
伪代码示例:
FunctionB()
{
...
throw e;
...
}
FunctionA()
{
...
FunctionB()
...
}
try
{
Function A()
}
catch(e)
{
(<--- breakpoint)
...
}
我可以在调试时用断点捕获异常。FunctionA()
但是如果异常发生在orFunctionB()
或其他函数中,我无法追溯。(假设广泛的异常使用和上述示例的巨大版本)。
我的问题的一种解决方案是确定调用堆栈并将其保存在异常构造函数中(即在它被捕获之前)。但这需要我从这个基异常类派生所有异常。它还需要大量代码,并且可能会减慢我的程序。
有没有更简单的方法需要更少的工作?无需更改我的大型代码库?
其他语言有没有更好的解决这个问题的方法?