如果我想在gdb
的调用语句中使用标识符NULL
,应该怎么做?调用setbuf(stdout,NULL):在当前上下文中没有符号“NULL”
是因为我没有在gdb中包含stdio.h吗?
我试过:call #include <stdio.h>
但这似乎不起作用。
如果我想在gdb
的调用语句中使用标识符NULL
,应该怎么做?调用setbuf(stdout,NULL):在当前上下文中没有符号“NULL”
是因为我没有在gdb中包含stdio.h吗?
我试过:call #include <stdio.h>
但这似乎不起作用。
只需使用0
或(void*)0
。没有什么花哨。
NULL
是C限定,某处定义为:
#define NULL ((void *) 0)
NULL
是由C预处理器替换为((void *) 0)
。所以它永远不会传递给编译器,所以你不能在gdb
中使用它。
这样做Jester建议,并只使用(void *) 0
。
当前GCC和GDB可以看到定义,但是你必须用-ggdb3
,-g
编译是不够的。
输入程序:
#include <stdio.h>
#define ABC 123
int main() {
return 0;
}
GDB:
# start is required.
start
print ABC
print NULL
输出:
$1 = 123
$2 = (void *) 0x0
在Ubuntu 14.04测试与GCC 4.8和GDB 7.7.1。
选项'-g3'也可以。 – alk
谢谢你,我很习惯使用NULL ....看来我要离开的背后它在gdb。 – CDT
NULL现在可以使用'-ggdb3':http://stackoverflow.com/a/31680508/895245 –