2013-06-23 4 views
0

벡터에 unique_ptr을 사용하는 C++ 11 코드가 있습니다.lldb (xcode)와 lldb (독립형)

#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를 사용하여 벡터에서 값을 디버그하고 확인할 수 있습니다. 그러나 lldb에서 clang 및 debug를 사용하여 동일한 코드를 컴파일하면 두 가지 오류가 발생합니다.

enter image description here

첫 번째는 STL 소스 코드에 lldb 흔적이다.

* 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 

두 번째 오류는 벡터 내용을 보려고 시도했을 때 세그먼테이션 오류입니다.

(lldb) p v 
Segmentation fault: 11 

이 명령을 컴파일에 사용했습니다.

clang++ -std=c++11 -stdlib=libc++ -g testit.cpp -o a 

무엇이 좋을까요? , 어느 것이 어느 이야기하기 위해

  • LLDB 표현 파서
  • LLDB 데이터 포맷터

을 :

답변

0

Lion : Xcode 4.6의 최신 버전으로 Xcode를 다시 설치했는데 문제가 해결되었습니다.

0

당신의 세그먼트 오류는이 두 가지 중 하나에 의해 야기 될 수있는 것 같아 충돌 로그가 필요할 것입니다. 당신이 ~/Library/Logs/DiagnosticReports에서 검색하고 좋은 출발점 또한

것이 질문에 추가 (그리고 http://bugreport.apple.com에서 애플과 버그 파일) 수 있다면 당신이 사전을 사용하는 것처럼

, 그것은 보인다 5 Xcode. 그 맞습니까? Xcode 5 Developer Preview를 재생산 할 수 있는지 테스트 할 수 있습니까? LLDB는 4.x에서 5 사이에서 크게 향상되었으므로 운이 좋을 수도 있습니다.