Odpowiedzi:
Wpisz, info variables
aby wyświetlić listę „Wszystkie globalne i statyczne nazwy zmiennych”.
Wpisz info locals
na listę „Zmienne lokalne bieżącej ramki stosu” (nazwy i wartości), w tym zmienne statyczne w tej funkcji.
Wpisz info args
na listę „Argumenty bieżącej ramki stosu” (nazwy i wartości).
y
jest zmieniana y.1913
na kompilację.
y
w funkcji, foo
a drugą y
w bar
. Aby je rozróżnić, należy im przypisać inną nazwę y
.
Jeśli chcesz zobaczyć lokalne zmienne funkcji wywołującej, użyj jej select-frame
wcześniejinfo locals
Na przykład:
(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
może być skrócone jako sel
. Alternatywnie użyj frame
/ f
, które również wydrukują ramkę)
Ponadto, ponieważ info locals
nie wyświetla argumentów funkcji, w której jesteś, użyj
(gdb) info args
Na przykład:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
i argv
nie będzie pokazywany przez info locals
. Pojawi się komunikat „Brak lokalnych mieszkańców”.
Odwołanie: polecenie info locals .
info variables
powinny być zmiennymi statycznymi w obrębie tej jednostki kompilacji, prawda?