【问题标题】:Examining local variables up the stack检查堆栈上的局部变量
【发布时间】:2014-09-12 12:51:07
【问题描述】:

当使用Eclipsegcc 进行调试时,如果我在堆栈中选择一个帧,与最深的帧不同,会发生以下情况。在Expressions 中,我可以键入任何局部变量并获取值。

但是,使用Console 窗口与gcc 交谈,我得到以下信息

p coeff_table
No symbol "coeff_table" in current context.

我如何告诉gcc 引用这个局部变量?

【问题讨论】:

  • coeff_table 是您当前堆栈帧中的局部变量?
  • @JoachimPileborg, coeff_table 是堆栈框架中的局部变量,不是最深的,但我在“调试”窗口(即调用堆栈窗口)中单击了它。

标签: c++ eclipse gdb


【解决方案1】:

您需要选择包含coeff_table 局部变量的堆栈帧。

改变框架的典型命令是frame/f 命令。打印回溯(bt 命令)以获取帧的编号,然后选择该帧。当您选择了正确的框架后,您应该能够打印出coeff_table 局部变量的值。

GDB sample session为例,假设回溯是:

(gdb) BT #0 set_quotes (lq=0x34c78 "", rq=0x34c88 "") 在 input.c:530 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70) 在 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) 在宏.c:71 #4 0x79dc in expand_input () at macro.c:40 #5 0x2930 in main (argc=0, argv=0xf7fffb20) 在 m4.c:195

并假设coeff_table 变量是expand_token 函数的局部变量。您需要选择第 3 帧:

(gdb) f 3

8.4 Selecting a Frame

【讨论】:

  • 谢谢,太好了。
  • 如果你喜欢在所有框架中列出本地人,你可以做“bt full”。
猜你喜欢
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
相关资源
最近更新 更多