gdb能否打印扩展的预处理器/宏结果?
例如:gdb能否打印扩展的预处理器/宏结果?,gdb,c-preprocessor,preprocessor,debug-information,Gdb,C Preprocessor,Preprocessor,Debug Information,例如: #include <stdlib.h> #define A 20 #define B 22 #define C (A+B) int main() { srand(time(0)); int i = (rand()&1) + C; return i; } 我怎么知道C是什么?gdb能告诉我吗?我加了兰德,所以我们不能轻易推断它是什么 预处理器将用20+22替换C。debuginfo中是否有此值可供打印 在一个实际的例子中,宏可能非常复杂,我
#include <stdlib.h>
#define A 20
#define B 22
#define C (A+B)
int main()
{
srand(time(0));
int i = (rand()&1) + C;
return i;
}
我怎么知道C是什么?gdb能告诉我吗?我加了兰德,所以我们不能轻易推断它是什么
预处理器将用20+22替换C。debuginfo中是否有此值可供打印
在一个实际的例子中,宏可能非常复杂,我不想浪费时间做预处理器的工作
我怎么知道C是什么
首先,您需要使用-g3标志构建程序,以便调试信息中包含宏信息,启动程序并使用info macro显示宏定义:
也可以展开宏:
(gdb) macro expand C
expands to: (20+22)
我怎么知道C是什么
首先,您需要使用-g3标志构建程序,以便调试信息中包含宏信息,启动程序并使用info macro显示宏定义:
也可以展开宏:
(gdb) macro expand C
expands to: (20+22)
如果使用gcc和pass-g3选项编译3级调试信息,则程序中将显示所有宏定义。默认值为调试级别,其中-g为级别2。如果使用gcc编译,并传递级别3调试信息的-g3选项,则程序中将显示所有宏定义。默认值为调试级别,其中-g为级别2。
(gdb) macro expand C
expands to: (20+22)