Risposte:
genere info variables
per elencare "Tutti i nomi di variabili globali e statici".
genere info locals
per elencare "Variabili locali del frame dello stack corrente" (nomi e valori), comprese le variabili statiche in quella funzione.
Digitare info args
per elencare "Argomenti del frame dello stack corrente" (nomi e valori).
y
viene rinominata y.1913
in compilation.
y
in funzione foo
e un'altra y
in bar
. Per distinguerli, è necessario assegnare un nome diverso ai due y
.
Nel caso in cui si desidera visualizzare le variabili locali di un uso funzione di chiamata select-frame
prima diinfo locals
Per esempio:
(gdb) bt
#0 0xfec3c0b5 in _lwp_kill () from /lib/libc.so.1
#1 0xfec36f39 in thr_kill () from /lib/libc.so.1
#2 0xfebe3603 in raise () from /lib/libc.so.1
#3 0xfebc2961 in abort () from /lib/libc.so.1
#4 0xfebc2bef in _assert_c99 () from /lib/libc.so.1
#5 0x08053260 in main (argc=1, argv=0x8047958) at ber.c:480
(gdb) info locals
No symbol table info available.
(gdb) select-frame 5
(gdb) info locals
i = 28
(gdb)
select-frame
può essere abbreviato come sel
. In alternativa, utilizzare frame
/ f
, che stampa anche la cornice)
Inoltre, poiché info locals
non visualizza gli argomenti per la funzione in cui ti trovi, usa
(gdb) info args
Per esempio:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
e argv
non verrà mostrato dainfo locals
. Il messaggio sarà "Nessun locale".
Riferimento: comando info local .
info variables
dovrebbero essere variabili statiche all'interno di quell'unità di compilazione, giusto?