关于C#:打印所有全局变量/局部变量?

Printing all global variables/local variables?

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


键入info variables以列出"所有全局和静态变量名"。

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

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


如果要查看调用函数的局部变量,请在info locals之前使用select-frame

例如。:

1
2
3
4
5
6
7
8
9
10
11
12
13
(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)


此外,由于info locals不显示您所在函数的参数,因此使用

1
(gdb) info args

例如:

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

argcargv不会由info locals显示。消息将是"没有本地人"。

参考:info locals命令。