Stampa di tutte le variabili globali / variabili locali?


Risposte:


490

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 argsper elencare "Argomenti del frame dello stack corrente" (nomi e valori).


2
@ KennyTM, i nomi delle variabili statiche nell'output di info variablesdovrebbero essere variabili statiche all'interno di quell'unità di compilazione, giusto?
cpuer

3
@cpuer: non necessariamente. Visualizza solo il nome nella tabella dei simboli. Ad esempio, con gcc su Mac una variabile statica yviene rinominata y.1913in compilation.
kennytm,

1
@KennyTM, le variabili statiche all'interno della funzione non sono memorizzate allo stesso modo delle variabili statiche esterne alla funzione (nella tabella dei simboli)?
cpuer,

2
@cpuer: sono memorizzati allo stesso modo, ma i nomi dei simboli saranno diversi. Considera di avere una variabile statica yin funzione fooe un'altra yin bar. Per distinguerli, è necessario assegnare un nome diverso ai due y.
kennytm,

1
@KennyTM, inoltre, è possibile arrivare dove una variabile viene dichiarata e definita rispettivamente?
cpuer,

110

Nel caso in cui si desidera visualizzare le variabili locali di un uso funzione di chiamata select-frameprima 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) 

4
( select-framepuò essere abbreviato come sel. In alternativa, utilizzare frame/ f, che stampa anche la cornice)
user202729,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.