Réponses:
Tapez info variablespour répertorier "Tous les noms de variables globales et statiques".
Tapez info localspour répertorier les «variables locales du cadre de pile actuel» (noms et valeurs), y compris les variables statiques dans cette fonction.
Tapez info argspour lister "Arguments du cadre de pile actuel" (noms et valeurs).
yest renommée y.1913lors de la compilation.
yen fonction fooet une autre yen 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-frameavantinfo 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-framepeut être abrégé en sel. Vous pouvez également utiliser frame/ f, qui imprime également le cadre)
De plus, comme info localsn'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;
}
argcet argvne sera pas montré par info locals. Le message sera "Pas d'habitants".
Référence: commande info locals .
info variablesdevraient être des variables statiques dans cette unité de compilation, non?