在gdb中调试C程序时,我在for循环中有一个断点.我无法打印"i"的值(我得到:在当前上下文中没有符号"i").我可以打印所有其他变量的值.这是正常的吗?
这是循环:
for (i=0; i < datasize; i++){  
    if ( feature_mask[i] > 0 ){  
        k = feature_mask[i] - 1;  
        if (neighbors[k][nmax-1] != 0){
            neighbors[k][nmax-1] = bvalue;  
            feature_mask[i] = -feature_mask[i];
        }
    }
}
dre*_*lax 23
我最近遇到过这个问题.我编译了GCC 5.1,然后用它来编译C++ 11代码库.而且,虽然我可以单步在gdb程序的代码,我无法打印任何变量的值,我一直得到"在目前情况下'’无符号" XYZ错误,每一个变量.
我使用的是gdb 7.4,但当时的最新版本是7.9.我下载了最新版本的gdb并对其进行了编译(使用GCC 5.1),当使用gdb 7.9时,我能够再次成功检查变量值.
我猜GCC 5.1的调试信息与gdb 7.4不兼容.
a'r*_*a'r 22
它可能已经在您编译的代码中进行了优化,因为您只feature_mask[i]在循环中使用它.
在调用编译器时是否指定了优化级别?如果您使用的是gcc,则只需省略任何-O选项,然后重试.
| 归档时间: | 
 | 
| 查看次数: | 37817 次 | 
| 最近记录: |