使用clang编译程序时,可以在gdb中扩展C宏吗?

tle*_*man 4 c gdb clang c-preprocessor

我有一个宏,它获取整数的第J位:

#define TWO_TO_THE(POWER) (1 << POWER)

#define JTH_BIT(BITS, J)  ((TWO_TO_THE((J-1)) & BITS) != 0)
Run Code Online (Sandbox Code Playgroud)

但是,我不能通过发出命令从gdb中使用它,print JTH_BIT(i,j)在调试时是否可以使用C中的宏?

alk*_*alk 6

宏由预处理器处理.编译器甚至不知道它们.

但是,如果幸运的话,gcc的选项-g3可以完成这项工作并生成允许gdb扩展宏的代码.

gdb文档(由我强调):

-glevel

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