如何在 gdb 中获取数据成员的值

How to get value of a data member in gdb?

本文关键字:数据成员 获取 gdb      更新时间:2023-10-16

嗨,我目前正在通过GDB在Linux机器中调试我的代码库。我目前在从类的对象 ptr 获取数据成员的值时遇到问题。要打印对象ptr的位置,我们可以使用"p"(打印)或"显示"命令。

例如:我有这样的课

class abc
{
    string a;
};

所以在我的代码中,如果我使用类 abc 的指针,那么

abc* objPtr = new abc();

所以在上面一行突破后,我将得到 objPtr,现在我想检查数据成员 a (abc::a) 值的值。 我怎么能做到这一点?

(gdb) p objPtr
$2 = {px = 0x3ba6430690, pn = {pi_ = 0x3ba6430698}}

此外,是否有其他方法来检查数据成员,即列表/向量?

我得到了答案。

$p/a objPtr->datamember->[if datamember also has some data member then we can call it in recurcion / can also call member function].

对于列表/向量,我们可以参考 http://sourceware.org/ml/gdb/2008-02/msg00064/stl-views.gdb。

你可以试试:

$ p abc->c_str()
p objPtr->a 

将打印变量a的数据成员类型和值