2014-09-12 53 views
1

當使用Eclipsegcc進行調試時,如果我在堆棧中選擇一個幀,那麼最深的幀將發生以下情況。在Expressions中,我可以輸入任何局部變量並獲取該值。檢查堆棧上的局部變量

但是,使用Console窗口交談gcc,我得到以下

p coeff_table 
No symbol "coeff_table" in current context. 

我如何告訴gcc引用該局部變量?

+1

和'coeff_table'是一個局部變量在當前堆棧幀? – 2014-09-12 12:53:16

+0

@JoachimPileborg,'coeff_table'是一個堆棧框架中的局部變量,並不是最深的,但我在「Debug」窗口(即調用堆棧窗口)中點擊了它。 – Vorac 2014-09-15 07:33:13

回答

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 

8.4 Selecting a Frame

+0

謝謝,這太棒了。 – Vorac 2014-09-15 08:32:38

+0

或者,如果您希望在所有框架中列出當地人,您可以執行「bt full」。 – dbrank0 2014-09-16 08:48:03