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

Apo*_*hay 5 c++ gdb

您好,我目前正在通过 GDB 在 Linux 机器上调试我的代码库。我目前面临着从类的对象 ptr 获取数据成员的值的问题。要打印对象 ptr 的位置,我们可以使用“p”(打印)或“显示”命令。

例如:我有这样的课程

class abc
{
    string a;
};
Run Code Online (Sandbox Code Playgroud)

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

abc* objPtr = new abc();
Run Code Online (Sandbox Code Playgroud)

因此,在上面的行中断之后,我将得到 objPtr,现在我想检查数据成员 a (abc::a) 值的值。我怎么能这么做呢?

(gdb) p objPtr
$2 = {px = 0x3ba6430690, pn = {pi_ = 0x3ba6430698}}
Run Code Online (Sandbox Code Playgroud)

此外,是否有不同的方法来检查作为列表/向量的数据成员?

unw*_*ind 0

你可以试试:

$ p abc->c_str()
Run Code Online (Sandbox Code Playgroud)