當使用Eclipse
和gcc
進行調試時,如果我在堆棧中選擇一個幀,那麼最深的幀將發生以下情況。在Expressions
中,我可以輸入任何局部變量並獲取該值。檢查堆棧上的局部變量
但是,使用Console
窗口交談gcc
,我得到以下
p coeff_table
No symbol "coeff_table" in current context.
我如何告訴gcc
引用該局部變量?
當使用Eclipse
和gcc
進行調試時,如果我在堆棧中選擇一個幀,那麼最深的幀將發生以下情況。在Expressions
中,我可以輸入任何局部變量並獲取該值。檢查堆棧上的局部變量
但是,使用Console
窗口交談gcc
,我得到以下
p coeff_table
No symbol "coeff_table" in current context.
我如何告訴gcc
引用該局部變量?
您將需要選擇包含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
和'coeff_table'是一個局部變量在當前堆棧幀? – 2014-09-12 12:53:16
@JoachimPileborg,'coeff_table'是一個堆棧框架中的局部變量,並不是最深的,但我在「Debug」窗口(即調用堆棧窗口)中點擊了它。 – Vorac 2014-09-15 07:33:13