webentwicklung-frage-antwort-db.com.de

Alle globalen Variablen / lokalen Variablen drucken?

Wie kann ich alle globalen Variablen/lokalen Variablen drucken? Ist das in gdb möglich?

299
cpuer

Art info variables um "Alle globalen und statischen Variablennamen" aufzulisten.

Art info locals um "Lokale Variablen des aktuellen Stack-Frames" (Namen und Werte) aufzulisten, einschließlich statischer Variablen in dieser Funktion.

Art info args um "Argumente des aktuellen Stack-Frames" (Namen und Werte) aufzulisten.

445
kennytm

Wenn Sie die lokalen Variablen einer aufrufenden Funktion sehen möchten, verwenden Sie select-frame Vor info locals

Z.B.:

(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) 
96
Samuel Åslund

Da info locals Die Argumente für die Funktion, in der Sie sich befinden, nicht anzeigt, verwenden Sie zusätzlich

(gdb) info args

Zum Beispiel:

int main(int argc, char *argv[]) {
    argc = 6*7;    //Break here.
    return 0;
}

argc und argv werden nicht mit info locals angezeigt. Die Nachricht lautet "Keine Einheimischen".

Hinweis: Befehl info locals .

24
Evgeni Sergeev