打印所有全局变量/局部变量?

时间:2021-12-08 09:32:23

How can I print all global variables/local variables? Is that possible in gdb?

如何打印所有全局变量/局部变量?在gdb中可能吗?

3 个解决方案

#1


374  

Type info variables to list "All global and static variable names".

输入info变量以列出“所有全局和静态变量名”。

Type info locals to list "Local variables of current stack frame" (names and values), including static variables in that function.

键入info局部变量来列出“当前堆栈帧的局部变量”(名称和值),包括该函数中的静态变量。

Type info args to list "Arguments of the current stack frame" (names and values).

键入info args以列出“当前堆栈帧的参数”(名称和值)。

#2


83  

In case you want to see the local variables of a calling function use select-frame before info locals

如果您想要查看调用函数的局部变量,请在info local之前使用selectframe。

E.g.:

例如:

(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) 

#3


17  

In addition, since info locals does not display the arguments to the function you're in, use

此外,由于info局部变量不显示您所在函数的参数,所以要使用

(gdb) info args

For example:

例如:

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

argc and argv won't be shown by info locals. The message will be "No locals."

argc和argv不会被本地信息显示。信息将是“没有本地人”。

Reference: info locals command.

参考:info locals命令。

#1


374  

Type info variables to list "All global and static variable names".

输入info变量以列出“所有全局和静态变量名”。

Type info locals to list "Local variables of current stack frame" (names and values), including static variables in that function.

键入info局部变量来列出“当前堆栈帧的局部变量”(名称和值),包括该函数中的静态变量。

Type info args to list "Arguments of the current stack frame" (names and values).

键入info args以列出“当前堆栈帧的参数”(名称和值)。

#2


83  

In case you want to see the local variables of a calling function use select-frame before info locals

如果您想要查看调用函数的局部变量,请在info local之前使用selectframe。

E.g.:

例如:

(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) 

#3


17  

In addition, since info locals does not display the arguments to the function you're in, use

此外,由于info局部变量不显示您所在函数的参数,所以要使用

(gdb) info args

For example:

例如:

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

argc and argv won't be shown by info locals. The message will be "No locals."

argc和argv不会被本地信息显示。信息将是“没有本地人”。

Reference: info locals command.

参考:info locals命令。