2011-06-07 68 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)