struct tree{
#ifdef A
#define TREE_GET(x,y) &x->y
#else
#define TREE_GET(x,y) x->y
#endif
};
我想知道是否定义了宏A.有没有我可以在gdb中使用的命令。
答案 0 :(得分:4)
在编译时,我们传递-gdwarf-2和-g3标志,以确保编译器在调试信息中包含有关预处理器宏的信息。
例如,g++ -gdwarf-2 -g3 program.cpp -o program
答案 1 :(得分:2)
使用-g3
和gdb问题进行编译:
info macro A
-glevel
...
3级包含额外信息,例如程序中存在的所有宏定义。使用-g3时,某些调试器支持宏扩展。
来自gdb documenation on info macro
& friends:
info macro [-a | -all] [ - ] macro
显示指定宏的当前定义或所有定义,并描述建立该定义的源位置或编译器命令行。可选的双破折号表示参数处理的结束和非C类宏的宏的开始,其中宏可以以连字符开头。