catlmap 예제

DisplayString 식에서 CPoint의 멤버인 x 및 y는 중괄호 내부에 있으므로 해당 값이 평가됩니다. 또한 이 예제에서는 이중 중괄호({{{또는 }})를 사용하여 중고 교정기를 이스케이프하는 방법을 보여 주기도 합니다. 다음 예제에서 시각화는 BaseClass 형식에만 적용됩니다. 예를 들어 형식의 단순화된 보기를 제공하는 단순뷰를 정의할 수 있습니다. 예를 들어 std::vector의 시각화: 버전 요소를 사용하여 시각화를 특정 모듈 및 해당 버전으로 범위를 지정하여 이름 충돌을 최소화하고 다른 시각화를 형식의 다른 버전에 사용할 수 있습니다. 예를 들어 디버거는 상위 목록 유형이 아닌 LinkedListItems 노드 요소의 컨텍스트에서 NextPointer 및 ValueNode 식을 평가합니다. 앞의 예에서 CAtlList에는 연결된 목록의 노드인 CNode 클래스(atlcoll.h에 있음)가 있습니다. m_pNext 및 m_element는 CAtlList 클래스가 아닌 해당 CNode 클래스의 필드입니다. ArrayItems 노드를 사용하여 Visual Studio 디버거가 형식을 배열로 해석하고 개별 요소를 표시하도록 합니다. std::벡터에 대한 시각화가 좋은 예입니다: IncludeView 및 ExcludeView 속성은 특정 뷰에 표시하거나 표시하지 않을 요소를 지정합니다. 예를 들어 std::vector의 다음 Natvis 사양에서는 단순 보기에 [크기] 및 [용량] 항목이 표시되지 않습니다.

.natvis 파일에 정의된 각 형식은 표시할 수 있는 UI 시각화 도우미를 명시적으로 나열해야 합니다. 디버거는 형식 항목의 시각화 도우미 참조를 등록된 시각화 도우미와 일치시다. 예를 들어 std::vector에 대한 다음 형식 항목은 이전 예제의 UIVisualizer를 참조합니다. [! 참고] .pdb에서 로드된 Natvis 규칙은 .pdb가 참조하는 모듈의 형식에만 적용됩니다. 예를 들어 Module1.pdb에 테스트라는 형식에 대한 Natvis 항목이 있는 경우 Module1.dll의 테스트 클래스에만 적용됩니다. 다른 모듈이 Test라는 클래스를 정의하는 경우 Module1.pdb Natvis 항목이 적용되지 않습니다. 이러한 특성은 다른 뷰에 표시되거나 표시되지 않을 요소를 지정합니다. 예를 들어 std::vector의 Natvis 사양이 주어지면 배열 하한의 기본값은 0입니다. 값을 재정의하려면 LowerBound 요소를 사용합니다. Visual Studio와 함께 제공되는 .natvis 파일에는 예제가 있습니다. 다른 Natvis 뷰를 정의하여 다양한 방법으로 형식을 표시할 수 있습니다.

예를 들어, 다음은 단순이라는 단순화된 뷰를 정의하는 std::vector의 시각화입니다. DisplayString 및 ArrayItems 요소는 기본 보기와 단순 보기에 표시되며 [크기] 및 [용량] 항목은 단순 보기에 표시되지 않습니다.