C语言 当我使用 gdb 调试源代码时,如何判断宏是否已定义


struct tree{
#ifdef A
   #define TREE_GET(x,y)        &x->y
#else
   #define TREE_GET(x,y)        x->y
#endif
}; 

我想知道是否定义了宏 A.有什么命令我可以在 gdb 中使用吗.

在编译时,我们传递 -gdwarf-2 和 -g3 标志,以确保编译器在调试信息中包含有关预处理器宏的信息。

例如,g++ -gdwarf-2 -g3 program.cpp -o program

C 预处理器宏

使用 -g3 和 gdb 问题进行编译:

info macro A

来自 -g3 上的 gcc 文档:

-glevel

级别 3 包括额外的信息,例如程序中存在的所有宏定义。使用 -g3 时,某些调试器支持宏扩展。

来自 info macro & friends 的 gdb 文档:

信息宏 [-a|-all] [--] 宏

显示命名宏的当前定义或所有定义,并描述建立该定义的源位置或编译器命令行。可选的双破折号表示参数处理的结束和非类 C 宏的宏的开始,其中宏可能以连字符开头。

最新更新