Ответы:
Введите 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 locals .
info variablesдолжны быть статическими переменными в этом модуле компиляции, верно?