在调试器中查看C++ shared_ptr的内容

6

在Xcode中调试C++代码,有没有一种方法可以查看std::shared_ptr的内容?

如果我查看“watch”窗口,我只能看到__ptr = (element_type *) 0xa66945c

在立即窗口中写入“po myPointer”也只打印内存地址。

我还尝试了“view Memory of "__ptr_"”和“view Memory of "*__ptr_"”,但它只让我看到原始内存而没有实际可读文本。

有人能建议一种查看我指针所指对象的方法吗?


1
你尝试过 po *(myPointer.__ptr) 吗? - David Schwartz
我尝试了,它告诉我: 错误:无法应用表达式副作用:无法去物化结果变量:无法读取其内存。 - MichaelB
3个回答

1
LLDB中的fr命令有一个--ptr-depth参数,可以帮助解决这些情况。例如,尝试将以下内容键入立即窗格中:fr var myPointer --ptr-depth=1

0
尝试右键单击 __ptr_,选择“查看值为” -> “自定义类型”
在弹出的字段中,将 element_type 替换为实际类型,即 std::shared_ptr 指向的类型。
我觉得这种事默认情况下不能正常工作,很荒谬。

0

我认为最好的方法是在std::cout语句中硬编码以显示对象的内容(如果有的话)...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接