Antworten:
Geben Sie ein, info variables
um "Alle globalen und statischen Variablennamen" aufzulisten.
Geben Sie ein, info locals
um "Lokale Variablen des aktuellen Stapelrahmens" (Namen und Werte) aufzulisten, einschließlich statischer Variablen in dieser Funktion.
Geben Sie ein, info args
um "Argumente des aktuellen Stapelrahmens" (Namen und Werte) aufzulisten.
y
wird umbenannt y.1913
auf Kompilierung.
y
in der Funktion foo
und eine andere y
in bar
. Um sie zu unterscheiden, muss den beiden ein anderer Name zugewiesen werden y
.
Falls Sie die lokalen Variablen einer aufrufenden Funktion sehen möchten, verwenden Sie diese select-frame
zuvorinfo 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)
select-frame
kann abgekürzt werden als sel
. Alternativ verwenden Sie frame
/ f
, die auch den Rahmen drucken)
info locals
Verwenden Sie außerdem, da die Argumente für die Funktion, in der Sie sich befinden, nicht angezeigt werden
(gdb) info args
Zum Beispiel:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
und argv
wird nicht von angezeigt info locals
. Die Nachricht lautet "Keine Einheimischen".
Referenz: Befehl info local .
info variables
sollten statische Variablen innerhalb dieser Kompilierungseinheit sein, oder?