【发布时间】:2014-10-11 06:09:14
【问题描述】:
在我的代码中,我有一个 STL 向量,其中包含指向对象的指针。 我之所以这样编码,是因为我必须从不同的地方操作对象本身。
std::vector<Object*> objects;
for (int i = 0; i < 10; i++) {
Object* o = new Object(i);
objects.push_back(o);
}
此代码假设 Object 是一个接受整数作为构造函数参数的对象。假设我在 for 循环结束后使用 GDB 断点,我必须做什么才能轻松查看向量中的对象?
当我执行“p objects”时,它只列出完全预期的指针地址,但我想查看每个对象所包含的整数变量。我尝试了“p objects[0]”,但这返回“Could not find operator[]”。
有人遇到过这个问题吗?或者知道我该如何解决这个问题? 我的目标是当对象的指针存储在 STL 向量中时,能够查看 GDB 中实际保存的对象。
【问题讨论】:
-
我建议使用智能指针向量。您可以在
gdb调试器中尝试p *o或p objects。 -
我需要观察指向来自不同地方的对象的指针向量中的内容,并且执行“p objects”将显示所有地址,但它们不会显示每个对象中包含的内容, 并且 "p objects[0]" 也不起作用,说 "Could not find operator[]"
-
gdb和 GCC 的最新版本,即g++可能会有所帮助 -
@user3064869 许多答案建议使用pretty printer。
-
@remyabel 我的 gdbinit 中有这个,它告诉我向量中包含的所有指针地址,因为它被编码为保存指向对象的指针。
标签: c++ pointers vector stl gdb