【发布时间】:2014-09-15 01:19:03
【问题描述】:
如何在 GDB 中访问 std::tr1::shared_ptr 的目标。这不起作用:
(gdb) p sharedPtr->variableOfTarget
如果我尝试使用指针对象本身 (p sharedPtr),我会得到如下结果:
$1 = std::tr1::shared_ptr (count 2) 0x13c2060
使用普通指针,我可以通过 p *ptr 获取所有数据,或者通过 p ptr->variable 获取一个变量。
我使用的是 Centos 6.5、GCC 4.4.7-4.el6 和 GDB 7.2-64.el6_5.2。
【问题讨论】:
-
您使用的是哪个编译器和标准库?还有哪个版本的 GDB?
-
@Alastair 对不起!更新了我的问题。
-
你试过
(gdb) p sharedPtr.get()吗? -
@Raydel Miranda 成功了!非常感谢!我稍后会添加答案。
-
我还不能回答我自己的问题,因为我的名声太小了。这是有效的:
p (*sharedPtr.get())打印目标对象的内容,p (*sharedPtr.get())->variableOfTarget将打印单个变量。有趣的是,如果你省略像p *sharedPtr.get()这样的括号,它也会推进程序的执行。有人可以解释这是为什么吗?
标签: c++ gdb shared-ptr tr1