变量不会占用它们的指定值(至少是gdb所说的)

时间:2014-09-03 11:43:44

标签: c++ debugging gdb

我正在逐步完成以下代码段:

(71)   int nonzero = this->matrix->getNonzero();
(72)   int rows = this->matrix->getRows();

您希望nonzerorows获取相应函数的返回值。但是没有 - 在gdb中,它们在第71行和第72行之前具有值200,并且它们之后都具有值200。尽管这两个函数返回的值不同于200。

另一方面,变量似乎采取了正确的价值。使用cout打印时,它们具有预期值。只有gdb似乎给出了错误的值。

您可以在调试会话协议中看到这一点:

0:  71      int nonzero = this->matrix->getNonzero();
0:  (gdb) 0:  (gdb) print nonzero
0:  $1 = 200
0:  (gdb) print this->matrix->getNonzero()
0:  $2 = 102437
0:  (gdb) n
0:  72      int rows = this->matrix->getRows();
0:  (gdb) print nonzero
0:  $3 = 200
0:  (gdb) print this->matrix->getRows() 
0:  $4 = 19044
0:  (gdb) n
0:  74      this->tmp.init("tmpCUDA", rows, 1, rows, true);
0:  (gdb) print rows
0:  $5 = 200

似乎我要么犯了一个非常愚蠢的错误,要么遇到一些非常奇怪的事情。我不得不说这些行在以前的版本中运行良好,并且在程序结构发生重大变化后会引起麻烦,但不是那个类。

(是的,我做make clean并重新启动。代码未优化。获取函数都是const,不能更改成员变量。)

0 个答案:

没有答案