在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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
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选项,然后重试.