我似乎不能从gdb
中获得一个clang
程序的所有预处置宏的信息.
考虑下面这段简单的代码:
#include <stdio.h>
#define MACRO_B 2
int main()
{
printf("MACRO A: %d\n", (int) MACRO_A);
printf("MACRO B: %d\n", (int) MACRO_B);
return 0;
}
我在命令行中使用以下命令定义了MACRO_A
:
clang -ggdb3 -fdebug-macro -DMACRO_A=1 -o test test.c
根据documentation,选项-fdebug-macro
应该足以添加关于MACRO_A
和MACRO_B
的信息,然而使用gdb
我无法访问关于MACRO_A
的信息:
(gdb) info macro MACRO_B
Defined at /data/work/external/developer/SO/debug_preprocessing_macro_clang/test.c:3
#define MACRO_B 2
(gdb) info macro MACRO_A
The symbol `MACRO_A' has no definition as a C/C++ preprocessor macro
at /data/work/external/developer/SO/debug_preprocessing_macro_clang/test.c:7
我用的是clang version 12.0.0-3ubuntu1~20.04.5
和gdb 9.2-0ubuntu1~20.04.1
.
我是不是漏掉了什么?