2011-11-21 11 views
6

È possibile ottenere il valore della variabile non utilizzata utilizzando GDB? Esiste qualche configurazione per GCC in modo che il valore di spazzatura della variabile non utilizzata venga visualizzato non "ottimizzato"?variabile non utilizzata GDB

file C:

#include<stdio.h> 

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

} 

Nel gdb voglio ottenere il valore della spazzatura della variabile 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 
+1

Hai dimenticato di aggiungere '% d'? – Marlon

+0

Stai compilando con -O0? –

+0

ho provato a compilare con "gcc -O0 -g file.c" ma non funziona. – Chinwei

risposta

1

Non ha nulla a che fare con GDB. L'entità che ha ottimizzato quella variabile è il compilatore (probabilmente GCC nel tuo caso). Potresti costringerlo a mantenerlo dichiarando la variabile come volatile

Una domanda migliore è: perché stai cercando di fare?

+0

Sto facendo una visualizzazione del programma e ho bisogno di valori per le variabili dichiarate .... mi stavo chiedendo se la variabile dichiarata inutilizzata è allocata alla memoria, se è così allora la variabile dovrebbe avere un valore .. – Chinwei

+0

Se il compilatore ha ottimizzato la variabile allora no - non viene allocato spazio di memoria in memoria, quindi non c'è valore. – gby

0

Non ha nulla a che fare con gcc. O il compilatore ha compilato il codice per mantenere il valore, oppure no.

0

È possibile aggiungere un'istruzione y=y;. Che costringerebbe y da utilizzare, e con gcc -O0 -g tenere traccia di esso (almeno sul mio Linux/Debian/Sid/AMD64 con gcc 4.6.2 e gdb 7.3.50)

Problemi correlati