2011-11-21 61 views
6

是否可以使用GDB获取未使用变量的值? GCC是否有一些配置,这样未使用变量的垃圾值将显示为“未优化”?GDB未使用变量

C文件:

#include<stdio.h> 

void main() 
{ 
    int x; 
    int y; 
    printf("value of x: %d",x); 

} 

在我想要得到变量y的值垃圾的GDB。

(gdb) run 
Starting program: /home/charmae/workspace/AVT/a.out 

Breakpoint 1, main() at file4.c:7 
7  printf("value of x: %d",x); 
(gdb) info locals 
x = 2789364 
(gdb) p y 
$1 = <optimized out> 
(gdb) p x 
$2 = 2789364 
+1

你忘了添加'%d'吗? – Marlon

+0

你正在编译-O0吗? –

+0

我已经尝试使用“gcc -O0 -g file.c”编译,但它不起作用。 – Chinwei

回答

1

它无关GDB。优化变量的实体是编译器(可能是GCC)。你可以强迫它通过声明变量来保持它

一个更好的问题是 - 你为什么试图做?

+0

我正在做一个程序可视化,我需要声明变量的值....我只是想知道如果未使用的声明变量分配给内存,如果是这样,然后变量应该有一个值.. – Chinwei

+0

如果编译器已经优化了变量,那么不会 - 它们没有在内存中分配存储空间,所以没有值。 – gby

0

这与gcc无关。编译器已经编译了代码来维护这个值,或者它没有。

0

您可能会添加一条y=y;声明。这将迫使y使用,并与gcc -O0 -g跟踪它(至少在我的Linux /于Debian/SID /与gcc 4.6.2gdb 7.3.50 AMD64)