Wie kann ich alle globalen Variablen/lokalen Variablen ausdrucken? Ist das in gdb möglich?
Antworten
Zu viele Anzeigen?Typ info variables
um "Alle globalen und statischen Variablennamen" aufzulisten (riesige Liste.
Typ info locals
um "Lokale Variablen des aktuellen Stapelrahmens" (Namen und Werte) aufzulisten, einschließlich statischer Variablen in dieser Funktion.
Typ info args
um "Argumente des aktuellen Stapelrahmens" (Namen und Werte) aufzulisten.
Wenn Sie die lokalen Variablen einer aufrufenden Funktion sehen wollen, verwenden Sie select-frame
antes de 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)
Darüber hinaus, da info locals
die Argumente der Funktion, in der Sie sich befinden, nicht anzeigt, verwenden Sie
(gdb) info args
Zum Beispiel:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
y argv
wird nicht angezeigt von info locals
. Die Meldung lautet "No locals".
Referenz: Befehl info locals .