如何在 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
进行编译,以便所有这些都能正常工作。
我是 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
进行编译,以便所有这些都能正常工作。