我试图在Mac OS X上使用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();
}
}
它在g 4.8下可以很好地编译,我可以使用gdb对其进行调试. this page之后,我可以使用vector v命令打印出STL向量.
但是,使用带有unique_ptr的矢量,我在gdb中收到此错误消息.
Cannot perform pointer math on incomplete type "unique_ptr<A, std::default_delet
e<A> >", try casting to a known type, or void *.
有什么问题吗?我该如何使unique_ptr完整类型与gdb获取内容?
添加
我注意到Xcode 4.5中的clang支持c 11功能,因此最简单的方法可能是使用Xcode.我在命令行中遇到了一些问题(lldb on xcode vs lldb on standalone)
解决方法:
Use python printers for GDB,您的打印机似乎已被弃用: