2011-11-21 17 views
6

¿Es posible obtener el valor de variable no utilizada utilizando GDB? ¿Hay alguna configuración para GCC para que el valor de basura de la variable no utilizada se muestre como 'optimizado'?GDB variable no utilizada

archivo c:

#include<stdio.h> 

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

} 

En el BGF Quiero obtener el valor de la variable y la basura.

(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

¿Olvidó agregar '% d'? – Marlon

+0

¿Está compilando con -O0? –

+0

intenté compilar con "gcc -O0 -g archivo.c" pero no funciona. – Chinwei

Respuesta

1

No tiene nada que ver con el BGF. La entidad que optimizó esa variable es el compilador (probablemente GCC en su caso). Puede obligarlo a mantenerlo declarando la variable como volátil

Una mejor pregunta es: ¿por qué está tratando de hacer?

+0

Estoy haciendo una visualización de programa y necesito valores para las variables declaradas ... Me preguntaba si la variable declarada no utilizada se asigna a la memoria, si es así, entonces la variable debería tener un valor. – Chinwei

+0

Si el compilador ha optimizado la variable, entonces no; no se les asigna espacio de almacenamiento en la memoria por lo que no hay ningún valor. – gby

0

No tiene nada que ver con gcc. O bien el compilador compiló el código para mantener el valor, o no.

0

Puede agregar una declaración y=y;. Eso obligaría a y a utilizar, y con gcc -O0 -g seguimiento de la misma (al menos en mi Linux/Debian/Sid/AMD64 con gcc 4.6.2 y gdb 7.3.50)

Cuestiones relacionadas