Eclipse调试器在for循环之外的步骤

时间:2014-03-22 22:51:06

标签: c++

我有以下for循环:

  // There is a typedef prior: uint32_t        bmd2_uint32;

  1.  bmd2_uint32 momentIndex(0);
  2.  for (int t = 0; t < numMoms; ++t) {
  3.    bmd2_float64 momentR;
  4.    bmd2_float32 * dataR = new bmd2_float32[numSegs * numVars];
  5.    bmd2getnthframe(handle, momentIndex, &momentR, dataR, error);
  6.    checkError(error);
  7.    for (int i = 0; i < numSegs * numVars; ++i) {
  8.      std::cout << dataR[i] << std::endl;
  9.    }
  10.   delete[] dataR;
  11.   ++momentIndex;
  12.  }

当我单步执行调试器时,它将继续执行第1-12行。然后我再做一步,然后再回到第1行并再次继续循环。这是调试器错误吗?问题是,第二次循环时,momentIndex为0。

1 个答案:

答案 0 :(得分:0)

这种奇怪现象可能发生在几个场景中:

1:您的目标文件处于不一致状态;也许一个对象没有建成应该是。清理并重建

2:在编译器中打开了优化,编译器重新安排了一些代码以提高性能。解决方案是禁用优化。

在这种情况下,clean and rebuild解决了这个问题。