Вам нужно будет выбрать фрейм стека, содержащий локальную переменную coeff_table
.
Типичная команда для изменения кадра - команда frame
/f
. Распечатайте обратную трассировку (bt
), чтобы получить номер кадра, а затем выберите этот кадр. Когда вы выбрали правильный фрейм, вы сможете распечатать значение локальной переменной coeff_table
.
Чтобы использовать GDB sample session в качестве примера, предположим, что трассировку является:
(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 Selecting a Frame
И 'coeff_table' является локальной переменной в текущем кадре стека? –
@JoachimPileborg, 'coeff_table' - это локальная переменная в кадре стека, которая не самая глубокая, но я нажал на нее в окне« Отладка »(то есть в окне стека вызовов). – Vorac