在 C++ 中使用带有类型定义的枚举时出现 GDB 问题

GDB issue when using enum with type definition in c++

我有一个 enum 具有如下所示的显式基础类型定义:

enum test : uint16_t
{
    test_x = 0x7fff, // 0111 1111 1111 1111
    test_y = 0x8000  // 1000 0000 0000 0000
};

我的代码中的变量被分配了 enum 值,如下所示:

test num1 = test_x;
test num2 = test_y;

当我尝试使用 GDB 查看值时,我得到了这样的结果:

(gdb) print num1
 = test_x
(gdb) print num2
 = (test_y | unknown: -65536)

为什么num2表现得这么奇怪?它的值在我声明的类型范围内, 那么这个配置有什么问题?

我还要指出,这不仅发生在 uint16_t 上,而且发生在 uint32_t 和值 test_x = 0x7fffffff, test_y = 0x80000000.

编辑

我正在使用 GNU GCC 版本:9.3.0 在 ARM 处理器平台上进行编译,并使用 GDB 版本 8.1.0。

在评论中得到一些有用的指示后,我将回答我自己的问题。

事实证明这确实是我使用的 GDB 版本中的一个错误。 升级到较新版本可以解决此问题。 (我从 8.1 升级到 10.2)

(gdb) print num1
 = test_x
(gdb) print num2
 = test_y
(gdb) show version
GNU gdb (GDB; JetBrains IDE bundle; build 157) 10.2
...