Изучение локальных переменных в стеке

При отладке с помощью Eclipse и gcc, если я выбираю кадр в стеке, отличный от самого глубокого, происходит следующее. В Expressions я могу ввести любую локальную переменную и получить значение.

Однако, используя окно Console чтобы поговорить с gcc, я получаю следующее

p coeff_table
No symbol "coeff_table" in current context.

Как сообщить gcc ссылку на эту локальную переменную?

1 ответ

Вам нужно будет выбрать фрейм стека, содержащий локальную переменную coeff_table.

Типичной командой для изменения фрейма является команда frame/f. Распечатайте backtrace (команда bt), чтобы получить номер кадра, а затем выберите этот кадр. Когда вы выбрали правильный фрейм, вы сможете распечатать значение локальной переменной coeff_table.

Чтобы использовать пример образца GDB в качестве примера, предположим, что backtrace:

(gdb) bt
#0 set_quotes (lq=0x34c78 "", rq=0x34c88 "")
 at input.c:530
#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
 at builtin.c:882
#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
 at macro.c:71
#4 0x79dc in expand_input () at macro.c:40
#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195

Предположим, что переменная coeff_table является локальной переменной функции expand_token. Вам нужно будет выбрать фрейм № 3:

(gdb) f 3

См. 8.4 Выбор кадра

licensed under cc by-sa 3.0 with attribution.