2011-06-07 96 views

回答

350

鍵入info variables以列出「所有全局和靜態變量名稱」。

類型info locals列出「當前堆棧幀的局部變量」(名稱和值),包括該函數中的靜態變量。

鍵入info args以列出「當前堆棧幀的參數」(名稱和值)。

+2

@ KennyTM,在'信息variables'輸出靜態變量的名稱應該是靜態的該編譯單元內的變量,對嗎? – cpuer 2011-06-07 07:09:53

+3

@cpuer:不一定。它只在符號表中顯示名稱。例如,在Mac上使用gcc時,靜態變量'y'在編譯時會重命名爲'y.1913'。 – kennytm 2011-06-07 07:14:57

+1

@KennyTM,函數內部的靜態變量是否與靜態變量的外部函數(符號表中)一樣存儲? – cpuer 2011-06-07 07:20:02

17

此外,由於info locals不顯示的參數,你所處的功能,使用

(gdb) info args 

例如:

int main(int argc, char *argv[]) { 
    argc = 6*7; //Break here. 
    return 0; 
} 

argcargv不會被info locals顯示。消息將是「沒有當地人」。

參考:info locals command

77

如果你想看到一個調用函數使用select-frame的局部變量之前info locals

如:

(gdb) bt 
#0 0xfec3c0b5 in _lwp_kill() from /lib/libc.so.1 
#1 0xfec36f39 in thr_kill() from /lib/libc.so.1 
#2 0xfebe3603 in raise() from /lib/libc.so.1 
#3 0xfebc2961 in abort() from /lib/libc.so.1 
#4 0xfebc2bef in _assert_c99() from /lib/libc.so.1 
#5 0x08053260 in main (argc=1, argv=0x8047958) at ber.c:480 
(gdb) info locals 
No symbol table info available. 
(gdb) select-frame 5 
(gdb) info locals 
i = 28 
(gdb)