2008-11-08 3 views
7

XCode (내 경우에는 3.1)가 STL 컨테이너 (또는 적어도 벡터)의 정상적인 디버그보기를 제공하려고 시도해야합니다.XCode에서 STL 컨테이너 검사하기

그러나 디버거에서 벡터를 볼 때마다 M_start 및 M_finish 멤버 (및 몇 가지 다른 멤버)와 함께 M_impl이 표시됩니다.하지만 그 사이에는 아무 것도 없습니다! (디버그 빌드, btw).

설정이 어딘가요?

더 복잡한 컨테이너를 검사하기 위해 디버그 뷰어를 더 보완 할 수있는 매크로가 있지만 읽지 못했음을 읽었습니다.

또한 메모리 뷰어로 이동하지 않고도 std :: wstrings을 볼 수 있기를 바랍니다. std :: string fine을 보여줍니다. std :: wstring을 보여주기 위해 할 수있는 일이 있습니까?

저는 이것이 약간의 복합적인 질문이라는 것을 알고 있습니다. 그러나 그것은 모두 같은 주제의 일부입니다. 전체 또는 부분 응답을 높이 평가!

답변

1

컨테이너 항목을 볼 수있는 기능은 템플릿 형식의 복잡성에 따라 달라질 수 있습니다.

template <class T> struct S { T m_t; } 

같은 등 INT, BOOL, 같은 사소한 사물, 심지어 간단한 클래스 템플릿을 위해 나는 디버거 변수보기에서 벡터 항목을 볼 아무런 문제가 없을 일반적으로. 디버깅을 할 때 버그가 발생하여 예상대로 작동하지 않는 경우가 종종 있기 때문에 정상적으로 말합니다. 그 중 하나는 변수보기에서 쓰레기 또는 완전히 쓸모없는 정보입니다. 일반적으로 대상을 깨끗하게 다시 작성하면 (또는 XCode를 다시 시작하여 깨끗하게 다시 작성하는 경우조차도) 문제가 해결됩니다.

다른 컨테이너 유형의 경우이 정보를 효율적으로보기가 쉽지 않습니다. 예를 들어지도는 종종 빨간색 - 검정색 트리로 구현됩니다. 디버거는 나무를 적절하게 걷고 모든 키와 값을 표시하기 위해 미리 알고 있어야합니다. 이것은 아마도 Xcode 나 GDB에서 많은 것을 요구할 것입니다. 특히 전자는 Objective-C와 C++보다 C++에 더 중점을 둡니다 (따라서 네비게이션은 편재성과 중요성에도 불구하고 네임 스페이스가 코드 완성을 죽이는 경향이 있습니다).

+0

그래, 맵과 같은 것들이 중요하지 않다는 것을 알았고 (물론 공개 API를 사용하여 정보를 얻는 시스템을 상상할 수도 있지만) 구현 로직이 필요했습니다. 나는 다른 IDE가 그것을 관리했다는 것을 알고있다. 적어도 벡터를보아야한다고 생각했습니다. – philsquared

+2

Visual Studio에서 2008 년부터 최소한이 작업을 수행 했으므로 너무 많이 기대하지는 않습니다. – grim

2

다양한 변수 유형에 Data formatters을 생성하여 더 멋지게 표시 할 수 있습니다 :-).

1

Project-> Edit Scheme ...에서 GDB 디버거를 사용해보고 프로젝트 빌드 설정 (빌드 옵션 -> C/C++/Objective-C 용 컴파일러)에서 컴파일러를 LLVM GCC 4.2로 전환하는 것을 고려하십시오.

Xcode 4에서는 V3f가 templateized float vector type 인 V3f의 std :: vector와 같은 것을보기 위해이 설정이 필요하다는 것을 알았습니다.

LLVM GCC 4.2에서는 ARC (Automatic Reference Counting)를 사용할 수 없다고 생각합니다.

관련 문제