2011-06-07 6 views

Répondre

350

Type info variables à la liste "Tous les noms de variables globaux et statiques".

Type info locals pour afficher la liste des "Variables locales de la pile actuelle" (noms et valeurs), y compris les variables statiques de cette fonction.

Tapez info args à la liste "Arguments du cadre de pile actuel" (noms et valeurs).

+2

@ KennyTM, les noms de variables statiques en sortie de 'information variables' doit être statique variables au sein de cette unité de compilation, non? – cpuer

+3

@cpuer: Pas nécessairement. Il affiche uniquement le nom dans la table des symboles. Par exemple, avec gcc sur Mac, une variable statique 'y' est renommée' y.1913' lors de la compilation. – kennytm

+1

@KennyTM, les variables statiques à l'intérieur de la fonction ne sont-elles pas stockées de la même manière que les variables statiques hors fonction (dans la table des mnémoniques)? – cpuer

17

En outre, étant donné que info locals ne présente pas les arguments à la fonction que vous êtes, 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 affiché par info locals . Le message sera "Aucun habitant".

Référence: info locals command.

77

Si vous voulez voir les variables locales d'une utilisation de la fonction d'appel select-frame avant info 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)