C++ 如何在vector中打印内容<;独特的_ptr>;在Mac OS X上使用gdb

C++ 如何在vector中打印内容<;独特的_ptr>;在Mac OS X上使用gdb,c++,debugging,c++11,gdb,unique-ptr,C++,Debugging,C++11,Gdb,Unique Ptr,我试图在MacOSX上使用C++11功能。我下载了带有端口的g++4.8.1 这是测试代码 class A { int x; public: A() {} ~A() {} A(A& a) {} A(int x) {this->x = x;} int get() {return x;} }; int main() { vector<unique_ptr<A>> v; auto a = new A

我试图在MacOSX上使用C++11功能。我下载了带有端口的g++4.8.1

这是测试代码

class A
{
    int x;
public:
    A() {}
    ~A() {}
    A(A& a) {}
    A(int x) {this->x = x;}
    int get() {return x;}
};

int main()
{
    vector<unique_ptr<A>> v;
    auto a = new A(10);
    unique_ptr<A> pa(a);
    v.push_back(move(pa)); // move(pa);
    for (auto& i: v)
    {
        cout << i->get();
    }
}
有什么问题吗?如何使用gdb创建唯一的_ptr complete类型以获取内容

补充 我注意到Xcode 4.5中的clang++支持c++11特性,所以最简单的方法可能是使用Xcode。我对命令行有一些问题()

,但您的打印机似乎已经过时了:


我可以使用Xcode;lldb在Xcode上运行良好。

您尝试过
($8)->get()
?似乎8美元是指向一个唯一指针的指针……肯尼TM:是的:“试图提取一个不是结构或联盟的值的组件”是一个错误消息。您可以尝试使用Ubuntu虚拟机,我拥有MacBook Pro但几乎停止了C++开发。我在全屏上放了一个Parallels Ubuntu实例,忘记了OSX:-)。太棒了,我从Ubuntu虚拟机上得到了比本机OS X(非视网膜显示)更好的字体显示@chico-我认为mac默认使用stdc++:非OSX特定:它不适用于我的
GNU gdb(gdb)7.5
从端口安装。我还测试了从brew安装的gdb 7.6,但它也不起作用。我在调试目录中复制了.gdbinit以确保它已被读取。@ProSeek,它不能与libc++一起工作,因为您的环境是OS X,我不确定您是否正在使用它。GCC python漂亮的打印机支持libstdc++。
Cannot perform pointer math on incomplete type "unique_ptr<A, std::default_delet
e<A> >", try casting to a known type, or void *.