如果我想NULL在gdb's call 语句中使用标识符,我该怎么办?
是因为我没有在 gdb 中包含 stdio.h 吗?
我试过了:call #include <stdio.h>但这似乎不起作用。
NULL是一个 C 定义,在某处定义为:
#define NULL ((void *) 0)
NULL被 C 预处理器替换为((void *) 0). 所以它永远不会传递给编译器,所以你不能在gdb.
所以按照Jester的建议去做,然后使用(void *) 0.
只需使用0or (void*)0。没有什么花哨。
目前的 GCC 和 GDB 可以看到定义,但是必须用 编译-ggdb3,-g是不够的。
输入程序:
#include <stdio.h>
#define ABC 123
int main() {
return 0;
}
广发银行:
# start is required.
start
print ABC
print NULL
输出:
$1 = 123
$2 = (void *) 0x0
在 Ubuntu 14.04 上使用 GCC 4.8 和 GDB 7.7.1 进行测试。