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

时间:2012-05-30 10:07:10

标签: c++ gdb

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

对于Eg:我有这样的课程

class abc
{
    string a;
};

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

abc* objPtr = new abc();

所以在上面的行中断后我会得到objPtr,现在我想检查datamember a(abc :: a)值的值。我怎么能这样做?

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

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

3 个答案:

答案 0 :(得分:1)

我得到了答案。

$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

答案 1 :(得分:0)

您可以尝试:

$ p abc->c_str()

答案 2 :(得分:0)

p objPtr->a 

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