我从我在 Visual Studio 2k3 中使用 C++ 编写的应用程序中获取了错误数据,因此我决定对其进行调试。然后我发现它抛出了一个异常,但我无法追踪到。
然后我放置了一些 try/catch block ,然后低看,当我不调试时没有异常。也就是说,我的代码如下所示:
std::vector<MyClass*> ListOfStuff;
.
.
.
try
{
.
.
.
const MyClass * localPointer = ListOfStuff[i]; //This is where the exception occurs
.
.
}
catch (...)
{
int x = 0; //place break here
}
因此,如果我逐行执行代码,我将得到一个异常并捕获机会。但是,如果我只是让它在 catch 中设置一个断点,则什么也不会发生。使用迭代器具有相同的行为。而且我可以成功地检查 vector 的大小,所以我知道我在范围内。
谁能告诉我这是怎么回事?如果重要的话,我正在使用一些标准的 Windows 库和 openGL。
最佳答案
你可以尝试放置一个
DebugBreak();
调用 catch
子句。如果应用程序在调试器中运行,它应该获得控制权。如果它没有在调试器中运行,您应该有机会附加“及时”调试器(如果安装了它,通常是 Visual Studio)。
关于c++ - 调试导致异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214109/