LLDB:打印shared_ptr引用的向量

ran*_*ano 2 c++ debugging shared-ptr lldb

在我的代码中有这样的东西:

shared_ptr<vector<unsigned int>> f = 
    make_shared<vector<unsigned int>>();
Run Code Online (Sandbox Code Playgroud)

我怎样才能打印出我只能访问shared_ptr对象的向量

 frame variable f
Run Code Online (Sandbox Code Playgroud)

 frame variable f.__ptr_->size()

 call to a function 'std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::size() const' that is not present in the target
Run Code Online (Sandbox Code Playgroud)

得到这个错误?

Enr*_*ata 5

鉴于此代码段:

#include <vector>
#include <memory>

using namespace std;

int main()
{
    shared_ptr<vector<unsigned int> > f = 
        make_shared<vector<unsigned int> >();
    f->push_back(1);
    f->push_back(1);
    f->push_back(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

LLDB对我有用:

(lldb) fr var
(std::__1::shared_ptr<std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > >) f = 0x00000001001038c8 size=3 (strong=1 weak=1) {
  __ptr_ = 0x00000001001038c8 size=3
}
Run Code Online (Sandbox Code Playgroud)

更好的是,如果我展开_ _ptr_:

(lldb) fr var --ptr-depth=2 
(std::__1::shared_ptr<std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > >) f = 0x00000001001038c8 size=3 (strong=1 weak=1) {   __ptr_ = 0x00000001001038c8 size=3 {
    [0] = 1
    [1] = 1
    [2] = 1   } }
Run Code Online (Sandbox Code Playgroud)