【问题标题】:View C++ shared_ptr content in debugger在调试器中查看 C++ shared_ptr 内容
【发布时间】:2016-01-10 09:58:03
【问题描述】:

在xcode中调试C++代码,有没有办法查看std::shared_ptr的内容?

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

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

我也尝试了'查看“__ptr_”的内存'和'查看“*__ptr_”的内存',但它只能让我看到

原始内存,没有实际可读的文本

谁能建议一种方法来查看我有指针的对象?

【问题讨论】:

  • 你试过po *(myPointer.__ptr)吗?
  • 我试过了,它告诉我:错误:无法应用表达式副作用:无法解除结果变量:无法读取其内存

标签: c++ xcode debugging


【解决方案1】:

LLDB 中的fr 命令有一个--ptr-depth 参数,可以在这些情况下提供帮助。例如,尝试在即时窗格中输入以下内容:

fr var myPointer --ptr-depth=1

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      尝试右键单击 __ptr_ 并选择“查看值为”->“自定义类型”

      在弹出的字段中,将 element_type 替换为 std::shared_ptr 指向的实际类型。

      我觉得这样的东西在默认情况下不起作用,这很荒谬。

      【讨论】:

        猜你喜欢
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        相关资源
        最近更新 更多