433 Stimmen

Drucken aller globalen Variablen/lokalen Variablen?

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

619voto

kennytm Punkte 488916

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.

148voto

Samuel Åslund Punkte 2294

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)

33voto

Evgeni Sergeev Punkte 20596

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 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X