是否可以使用GDB获取未使用变量的值? GCC是否有一些配置,以便未显示未使用变量的垃圾值?'?
c file:
#include<stdio.h>
void main()
{
int x;
int y;
printf("value of x: %d",x);
}
在gdb中我想得到变量y的垃圾值。
(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
答案 0 :(得分:1)
它与GDB无关。优化该变量的实体是编译器(在您的情况下可能是GCC)。您可以强制它通过将变量声明为volatile
来保留它更好的问题是 - 你为什么要这么做?
答案 1 :(得分:0)
这与gcc无关。编译器已编译代码以维护该值,或者它没有。
答案 2 :(得分:0)
您可以添加y=y;
语句。这会强制使用y
,并gcc -O0 -g
跟踪它(至少在我的Linux / Debian / Sid / AMD64上gcc 4.6.2
和gdb 7.3.50
)