미안, 나는 여기에 내 코멘트를 추가 스택 오버플로 주석은 서식을 지원하지 않기 때문에 답변이 필요합니다.
확실히 lldb의 문제입니다.
v = (const std::__1::vector<int, std::__1::allocator<int> > &) size=1
size=1
이 잘못된 : 당신의 사진이 전체 V 설명이 포함되어 있지 않습니다. 제대로 lldb 콘솔 인쇄 v
에서 인쇄 명령 게다가 은 :
(lldb) p v
(const std::__1::vector<int, std::__1::allocator<int> >) $1 = size=3 {
[0] = 1
[1] = 2
[2] = 3
}
이 엑스 코드는 변수를 표시 할 lldb frame var
명령을 사용하는 것 같다. 이 엑스 코드로 표시됩니다 정확히 같은 출력을 표시 :
(lldb) frame variable -T
(int) argc = 1
(const char **) argv = 0x00007fff5fbff710
(const std::__1::vector<int, std::__1::allocator<int> > &) v = size=1: {
(std::__1::__vector_base<int, std::__1::allocator<int> >) std::__1::__vector_base<int, std::__1::allocator<int> > = {
(std::__1::__vector_base<int, std::__1::allocator<int> >::pointer) __begin_ = 0x000000010103fa40
(std::__1::__vector_base<int, std::__1::allocator<int> >::pointer) __end_ = 0x000000010103fa4c
(std::__1::__compressed_pair<int *, std::__1::allocator<int> >) __end_cap_ = {
(std::__1::__libcpp_compressed_pair_imp<int *, std::__1::allocator<int>, 2>) std::__1::__libcpp_compressed_pair_imp<int *, std::__1::allocator<int>, 2> = {
(int *) __first_ = 0x000000010103fa4c
}
}
}
}
나는 문제가 변수 v
처음에 따라서 벡터에 대한 몇 가지 정보에 알 수 만들고 다른 스택 프레임에서 초기화되었다는 사실에서 오는 생각 함수 호출의 결과로 초기 벡터가 전달되었을 때 하부 스택 프레임.
둘 사이의 유일한 명백한 차이는 하나가 완전히 STL 유형이라는 것입니다. 즉 int에 대한 고유 포인터의 벡터입니다. 두 번째는 사용자 지정 또는 타사 라이브러리 유형을 포함합니다. 아마도 XCode가 "Imxr :: MxrLinked [List]"유형을 구문 분석하는 방법을 모르는 경우 고유 한 ptr/벡터를 모두 파싱하는 것을 포기할 것입니까? – jwimberley
나는 이것이 문제가 아니라는 것을 분명히하기 위해 질문을 편집했다. 편집이 도움이되는지 알려주세요. –
어떤 최적화 작업을 수행합니까? – Niall