首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不完全枚举类声明的gdb打印<不完全type>

不完全枚举类声明的gdb打印<不完全type>
EN

Stack Overflow用户
提问于 2022-01-12 16:07:25
回答 1查看 130关注 0票数 2

我一直沉浸在C++中,发现gdb的行为令人惊讶。我想知道这是预期的行为,还是我搞砸了什么。

代码语言:javascript
运行
复制
enum class Foo;
struct Bar { Foo a; int b; };
enum class Foo { A, B, C };

int main() {
    auto a = Foo::A;
    auto b = Bar{ Foo::A, 1 };
}

使用gcc 7.5.0构建(带有-g选项),并使用gdb 8.1.1运行

当试图打印a或b.a的值时,结果是<incomplete type>

如果struct声明不在两个枚举声明之间,或者枚举已完全声明一次,则不会发生这种情况。

由于实际原因,我有一个头文件,其中包含一个相对较大的类声明,其中一些成员是枚举类型。在类声明变得更清晰之后,我觉得已经有了枚举的完整声明,并决定部分声明它们。

在仍在执行这些部分声明的同时,我可以做些什么来访问gdb中的变量信息吗?还是完全声明我的枚举是唯一的方法。

类似的问题

不要关注我的情况,因为如果枚举只被完全声明,那么访问类型信息就没有问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-12 17:59:52

使用g++ (Debian 11.2.0-10) 11.2.0和GDB-10.0:

代码语言:javascript
运行
复制
7           auto b = Bar{ Foo::A, 1 };
(gdb) p a
$1 = Foo::A
(gdb) n
8       }
(gdb) p b
$2 = {a = Foo::A, b = 1}

使用gcc 7.5.0构建(带有-g选项),运行时使用GDB8.1.1

这些都很古老。

有什么我能做的吗

我建议尝试最新发布的GDB (易于从源代码构建),如果这没有帮助的话,最新的GCC。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70684743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档