首页 > 解决方案 > 如何在 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
$1 = 0

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

任何帮助将不胜感激。

标签: cgdbenumeration

解决方案


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

Try myMon = AUG;,然后在后续行中,p myMon$1 = AUG根据需要显示。

确保您正在编译-g以使所有这些工作。


推荐阅读