如果我想在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 –