gpt4 book ai didi

c++ - 访问 GDB 中的 vector 项

转载 作者:行者123 更新时间:2023-11-30 02:39:39 26 4
gpt4 key购买 nike

例如,我在模板类中有这样的结构:

struct Foo{
int data;
vector<Foo*> children;
}

为了打印出数据值,我可以简单地这样做:(让 bar 成为指向 Foo 的指针)

print bar->data

这很好用。不过,我还想跟随 children 到另一个 Foo。我试过:

print bar->children[0]->data

但它不起作用。我应该如何访问 vector 中的项目并在 print 中使用它?

最佳答案

使用 GDB 7.9 和 g++ 4.9.2,它在打印 bar->children[0]->data 时运行良好.

但是,这里还有一个访问这些元素的间接方法: print (*(bar->children._M_impl._M_start)@bar->children.size())[0]->data其中 VECTOR._M_impl._M_start是 VECTOR 和 POINTER@VECTOR.size() 的内部数组用于限制指针的大小。

引用:How do I print the elements of a C++ vector in GDB?

补充:

还有另一种不太优雅但更通用的方式:

print bar->children[0]

你可能会得到这样的结果:

(__gnu_cxx::__alloc_traits<std::allocator<Foo*> >::value_type &) @0x603118: 0x603090

因此您可以使用上面给出的指针访问它: print ((Foo)*0x603090).data

关于c++ - 访问 GDB 中的 vector 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com