Odpowiedzi:
Wpisz, info variablesaby wyświetlić listę „Wszystkie globalne i statyczne nazwy zmiennych”.
Wpisz info localsna listę „Zmienne lokalne bieżącej ramki stosu” (nazwy i wartości), w tym zmienne statyczne w tej funkcji.
Wpisz info argsna listę „Argumenty bieżącej ramki stosu” (nazwy i wartości).
yjest zmieniana y.1913na kompilację.
yw funkcji, fooa drugą yw 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-framewcześ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-framemoże być skrócone jako sel. Alternatywnie użyj frame/ f, które również wydrukują ramkę)
Ponadto, ponieważ info localsnie 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;
}
argci argvnie będzie pokazywany przez info locals. Pojawi się komunikat „Brak lokalnych mieszkańców”.
Odwołanie: polecenie info locals .
info variablespowinny być zmiennymi statycznymi w obrębie tej jednostki kompilacji, prawda?