Відповіді:
Введіть info variables
список "Усі глобальні та статичні імена змінних".
Введіть info locals
список "Локальні змінні поточного кадру стека" (імена та значення), включаючи статичні змінні в цій функції.
Введіть info args
список "Аргументи поточного кадру стека" (назви та значення).
y
перейменована y.1913
на компіляцію.
y
функція foo
та інша y
в bar
. Щоб їх розрізнити, двом особам слід присвоїти інше ім'я y
.
У випадку, якщо ви хочете побачити локальні змінні функції виклику, використовуйте select-frame
ранішеinfo locals
Наприклад:
(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
можна скоротити як sel
. Альтернативно використовувати frame
/ f
, які також друкують кадр)
Крім того, оскільки info locals
не відображаються аргументи функції, в якій ви перебуваєте, використовуйте
(gdb) info args
Наприклад:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
і argv
не буде показано info locals
. Повідомлення буде "Без місцевих жителів".
Довідка: команда інформації місцевих жителів .
info variables
повинні бути статичними змінними в межах одиниці компіляції, правда?