0

我遇到了一个非常奇怪的错误,也许有人可以帮助我理解。我有一个代码与向量超出范围错误一致地崩溃。关于这个错误的另一个奇怪的事情是,当我在整个代码中加入大量 cout 语句以试图确定错误的位置时,它就停止了崩溃。

无论如何,作为进一步的测试,我在部分代码周围放置了 try/catch 块,我的实现类似于:

try {
    // my code that is presumably causing problems
  }
  catch (out_of_range& oor) {
    cerr << "Out of Range error: " << oor.what() << endl;
  }

当我添加此代码时,错误似乎消失了。没有更多的崩溃,我再也没有在 catch 中看到 cerr 消息。

有什么可能的方法可以使这有意义吗?

4

1 回答 1

1

单步调试器中的旧代码并隔离错误。在调试器中单步执行新代码并隔离非错误。我将其发布为“答案”而不是评论,因为它会在比我们回答或您阅读我们的答案时更短的时间内为您提供您正在寻找的答案。

十个字的调试器:用-g编译,google“gdb cheatsheet”,很简单。

于 2012-07-04T02:31:34.603 回答