2010-08-16 90 views
1

我正在使用 gcc 4.1.2 20080704(Red Hat 4.1.2-48) GNU gdb(GDB)Red Hat Enterprise Linux(7.0.1-23.el5_5.1 )gdb无法监视for循环内声明的变量

我无法看到for循环中声明的变量。我试图在一个较小的例子上重新创建这个行为,但它工作正常。看起来像这个问题只出现在复杂的类成员函数中。请指教。

编辑:优化关闭

+1

您是否已关闭*优化? – kennytm 2010-08-16 12:04:37

+0

是的,我有。没有优化。 – jackhab 2010-08-19 14:50:35

回答

0

我一直无法解决它,但这种解决方法可能会帮助你。

让我们说要访问循环变量在

for(int i=0;i<x;i++){...} 

你可以做以下

print &i 
$1 = (int *) 0x7fffffffdfa8 
watch *0x7fffffffdfa8 

这其中有不必等待,因为它可能会重新分配垃圾值倍数的确定缺点次数,每次发生时,您会收到通知

3

听起来你对优化编译。尝试用-O0 -g重新编译。

+0

+1,但代码通常仍然可以在'-O1'下调试 – Hasturkun 2010-08-16 12:50:12

0

我同意你可能需要关闭优化。 为什么是因为编译器可能会在优化步骤中消除局部变量并将其值直接存储在寄存器中。

如果您不想用-O0重新构建所有内容,您也可以在测试时尝试声明这些变量为易失性