首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xcode上的lldb与单机上的lldb

xcode上的lldb与单机上的lldb
EN

Stack Overflow用户
提问于 2013-06-23 09:00:28
回答 2查看 424关注 0票数 0

我有这段在向量中使用unique_ptr的C++11代码。

代码语言:javascript
复制
#include <vector>
#include <iostream>
#include <memory>

using namespace std;

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);

    auto a2 = new A(20);
    unique_ptr<A> pb(a2);
    v.push_back(move(pb)); // move(pa);

    for (auto& i: v)
    {
        cout << i->get();
    }
}

我可以使用Xcode来调试和检查vector>中的值。但是,当我在lldb中使用clang和debug编译相同的代码时,出现了两个错误。

第一个是lldb跟踪到STL源代码。

代码语言:javascript
复制
* thread #1: tid = 0x1f03, 0x0000000100001744 a.out`__gnu_cxx::__normal_iterator<std::unique_ptr<A, std::default_delete<A> >*, std::vector<std::unique_ptr<A, std::default_delete<A> >, std::allocator<std::unique_ptr<A, std::default_delete<A> > > > >::operator*() const at stl_iterator.h:740, stop reason = step over
    frame #0: 0x0000000100001744 a.out`__gnu_cxx::__normal_iterator<std::unique_ptr<A, std::default_delete<A> >*, std::vector<std::unique_ptr<A, std::default_delete<A> >, std::allocator<std::unique_ptr<A, std::default_delete<A> > > > >::operator*() const at stl_iterator.h:740
   737  
   738        // Forward iterator requirements
   739        reference
-> 740        operator*() const
   741        { return *_M_current; }
   742  
   743        pointer
(lldb) n
Process 41243 stopped

第二个错误是,当我尝试查看矢量内容时,出现了分割错误。

代码语言:javascript
复制
(lldb) p v
Segmentation fault: 11

我使用此命令进行编译。

代码语言:javascript
复制
clang++ -std=c++11 -stdlib=libc++ -g testit.cpp -o a

可能出了什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-24 02:49:16

我用Lion的最新版本重新安装了Xcode :Xcode4.6,这个问题已经解决了。

票数 0
EN

Stack Overflow用户

发布于 2013-06-24 00:49:05

您的分段故障可能是由以下两个原因之一引起的:

  • LLDB表达式解析器
  • LLDB数据格式化程序

为了区分哪一个是哪一个,崩溃日志是必要的。

如果你可以从~/Library/Logs/DiagnosticReports检索它,并将它附加到这个问题中(还可以在http://bugreport.apple.com上向苹果提交一个错误),这将是一个很好的起点

另外,看起来您使用的是5版本之前的Xcode。对吗?您是否可以访问Xcode5开发人员预览版来测试此代码是否会重现?LLDB在4.x和5之间有了巨大的改进,所以你可能会有更好的运气。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17256800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档