Réponses:
Tapez info variables
pour répertorier "Tous les noms de variables globales et statiques".
Tapez info locals
pour répertorier les «variables locales du cadre de pile actuel» (noms et valeurs), y compris les variables statiques dans cette fonction.
Tapez info args
pour lister "Arguments du cadre de pile actuel" (noms et valeurs).
y
est renommée y.1913
lors de la compilation.
y
en fonction foo
et une autre y
en bar
. Pour les distinguer, un nom différent doit être attribué aux deux y
.
Au cas où vous voudriez voir les variables locales d'une fonction appelante utiliser select-frame
avantinfo locals
Par exemple:
(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
peut être abrégé en sel
. Vous pouvez également utiliser frame
/ f
, qui imprime également le cadre)
De plus, comme info locals
n'affiche pas les arguments de la fonction dans laquelle vous vous trouvez, utilisez
(gdb) info args
Par exemple:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
et argv
ne sera pas montré par info locals
. Le message sera "Pas d'habitants".
Référence: commande info locals .
info variables
devraient être des variables statiques dans cette unité de compilation, non?