如何在 GDB 中以符号形式检查枚举变量的值?

How to check value of enumeration variables in their symbolic form in GDB?

我是 C 的新手,想知道如何在 GDB 中检查枚举变量的符号形式的值

这是我的测试代码:

int main () 
{
    enum months {JAN = 1, FEB, MAR, APR, MAY, JUN,
                 JUL, AUG, SEP, OCT, NOV, DEC }myMon;
    printf("%d\n", JAN);
    
    return 0;
}

在 GDB 中,我在行 printf("%d\n", JAN); 中设置了断点,并尝试检查 myMon 的符号形式的值,并得到以下内容:

(gdb) p myMon
 = 0

我想知道是否有可能以它的符号形式打印myMon的值?

任何帮助将不胜感激。

是的,p 命令将执行此操作,但前提是变量设置为与命名枚举常量之一匹配的值。这里 myMon 等于 0(显然是偶然的,因为你没有初始化它),而你将枚举常量设置为从 1 开始,所以 0 不是其中任何一个。在这种情况下,gdb 回退到将其打印为整数。

尝试 myMon = AUG;,然后在后续行中,p myMon 将根据需要显示 = AUG

确保您使用 -g 进行编译,以便所有这些都能正常工作。