【发布时间】:2021-02-04 20:02:15
【问题描述】:
例如:
#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;
}
在 gdb 中,
(gdb) print C
No symbol "C" in current context.
我怎么知道C 是什么? gdb 可以告诉我吗? (我添加了rand(),所以我们不能轻易推断它是什么)
预处理器将用(20+22) 替换C。这个值在 debuginfo 中是否可以以某种方式打印?
在一个宏可能非常复杂的真实示例中,我不想浪费时间做预处理器的工作。
【问题讨论】:
-
如果您使用 gcc 编译并传递
-g3选项(用于 3 级调试信息),您将拥有程序中存在的所有宏定义。默认为调试级别(仅-g为 2 级)。
标签: gdb c-preprocessor preprocessor debug-information