Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否打印所有全局变量/局部变量?_C_Variables_Gdb_Global Variables - Fatal编程技术网

C 是否打印所有全局变量/局部变量?

C 是否打印所有全局变量/局部变量?,c,variables,gdb,global-variables,C,Variables,Gdb,Global Variables,如何打印所有全局变量/局部变量?这在gdb中可能吗?键入以列出“所有全局和静态变量名” 键入以列出“当前堆栈帧的局部变量”(名称和值),包括该函数中的静态变量 键入以列出“当前堆栈帧的参数”(名称和值)。此外,由于info locals不显示所处函数的参数,请使用 (gdb) info args 例如: int main(int argc, char *argv[]) { argc = 6*7; //Break here. return 0; } info locals

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

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

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


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

此外,由于
info locals
不显示所处函数的参数,请使用

(gdb) info args
例如:

int main(int argc, char *argv[]) {
    argc = 6*7;    //Break here.
    return 0;
}
info locals
不会显示
argc
argv
。消息将是“没有本地人”


参考:.

如果要查看调用函数的局部变量,请在
信息局部变量之前使用
选择frame

例如:


@KennyTM,
info variables
的输出中的静态变量名应该是该编译单元中的静态变量,对吗?@cpuer:不一定。它仅在符号表中显示名称。例如,在Mac上使用gcc时,静态变量
y
在编译时被重命名为
y.1913
。@KennyTM,函数内的静态变量与函数外的静态变量(在符号表中)的存储方式不一样吗?@cpuer:它们的存储方式相同,但符号名称不同。考虑在函数<代码> fo中有一个静态变量<代码> y>代码>另一个<代码> y>代码> <代码> bar <代码>。为了区分它们,必须为这两个
y
指定不同的名称。@KennyTM,此外,是否可以分别获得声明和定义变量的位置?(
select frame
可以缩写为
sel
。或者使用
frame
/
f
,也可以打印帧)这里有一个真正的参考:
(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)