ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c-如何在Mac OS X上使用gdb打印出vector中的内容

2019-10-11 02:07:30  阅读:294  来源: 互联网

标签:c c11 debugging gdb unique-ptr


我试图在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,您的打印机似乎已被弃用:

标签:c,c11,debugging,gdb,unique-ptr
来源: https://codeday.me/bug/20191011/1889191.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有