使用Eclipse
和gcc
进行调试时,如果我在堆栈中选择一个不同于最深层的帧,则会发生以下情况。在Expressions
中,我可以键入任何局部变量,然后得到值。
但是,使用Console
窗口与gcc
对话,我会得到以下内容
p coeff_table
No symbol "coeff_table" in current context.
如何告诉gcc
引用此局部变量?
答案 0 :(得分:3)
您需要选择包含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