C 为什么gdb显示错误的变量值?

C 为什么gdb显示错误的变量值?,c,gdb,C,Gdb,我有一个简单的程序: #include <stdio.h> void func(int i) { i = 1; printf("%d\n", i); } int main(int argc, char *argv[]){ func(0); return 0; } 程序运行良好,显示“1”,但为什么gdb显示“0”值 德比安气喘 我在gcc-4.7、gcc-4.6中观察到了这一点。 在gcc-4.4上一切正常。如果使用-fvar跟踪编译,这是一个已

我有一个简单的程序:

#include <stdio.h>

void func(int i) {
    i = 1;
    printf("%d\n", i);
}

int main(int argc, char *argv[]){
    func(0);
    return 0;
}
程序运行良好,显示“1”,但为什么gdb显示“0”值

德比安气喘

我在gcc-4.7、gcc-4.6中观察到了这一点。
在gcc-4.4上一切正常。

如果使用
-fvar跟踪编译,这是一个已修复的错误。您的问题是更严格的版本,它引用了一个建议上面的编译标志。

什么是
printf
print?它对我有用。第二个
pi
(gdb)pi$2=1
@Mat-OP的示例没有显示任何优化。GNU-gdb(gdb)7.4.1-debian是否
gdb test
加载了错误的二进制文件?您是否尝试过
gdb./test
。。。?
gcc test.c -g -o test

gdb test
(gdb) b main
Breakpoint 1 at 0x400543: file test.c, line 9.
(gdb) run
Starting program: /tmp/test 

Breakpoint 1, main (argc=1, argv=0x7fffffffe458) at test.c:9
9       func(0);
(gdb) s
func (i=0) at test.c:4
4       i =1;
(gdb) p i
$1 = 0
(gdb) n
5       printf("%d\n", i);
(gdb) p i
$2 = 0
(gdb)