我有一个获取整数的第 J 位的宏:
#define TWO_TO_THE(POWER) (1 << POWER)
#define JTH_BIT(BITS, J) ((TWO_TO_THE((J-1)) & BITS) != 0)
但是,我不能通过发出命令 print JTH_BIT(i,j)
从 gdb 使用它,甚至可以在调试时使用 C 中的宏吗?
最佳答案
宏由预处理器处理。编译器甚至不知道它们。
但是,如果幸运的话,GCC 的选项 -g3
可以完成这项工作并生成允许 gdb
扩展宏的代码。
来自gdb documentation (我强调):
-glevel
[...] Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use -g3.
关于使用 clang 编译程序时,可以在 gdb 中扩展 C 宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665376/