다음을 통해 공유


디버깅하는 동안 호출 스택의 시각적 맵 만들기(C#, Visual Basic, C++, JavaScript)

디버깅하는 동안 호출 스택을 시각적으로 추적하는 코드 맵을 만듭니다. 맵에서 노트를 작성하여 코드가 수행하는 작업을 추적할 수 있으므로 버그를 찾는 데 집중할 수 있습니다.

코드 맵에서 사용할 수 있는 명령 및 작업에 대한 자세한 내용은 코드 맵 찾아보기 및 다시 정렬을 참조하세요.

중요합니다

Visual Studio Enterprise 버전에서만 코드 맵을 만들 수 있습니다.

다음은 코드 맵을 간단히 살펴보는 것입니다.

코드 맵에서 호출 스택을 사용하여 디버깅

호출 스택 매핑

  1. Visual Studio Enterprise C#, Visual Basic, C++또는 JavaScript 프로젝트에서 디버그> 시작 디버깅을 선택하거나 F5 키를 눌러디버깅을 시작합니다.

  2. 앱이 중단 모드로 전환되거나 함수를 한 단계씩 실행한 후코드 맵>를 선택하거나 Ctrl+Shift 키를+` 누릅니다.

    현재 호출 스택은 새 코드 맵에 주황색으로 표시됩니다.

    코드 맵에서 호출 스택 보기

디버깅을 계속하면 코드 맵이 자동으로 업데이트됩니다. 맵 항목 또는 레이아웃을 변경해도 코드에 영향을 주지 않습니다. 지도에서 자유롭게 이름을 바꾸거나 이동하거나 제거할 수 있습니다.

항목에 대한 자세한 내용을 보려면 항목 위로 마우스를 가져가서 항목의 도구 설명을 확인합니다. 도구 모음에서 례를 선택하여 각 아이콘의 의미를 알아볼 수도 있습니다.

코드 맵 범례

비고

메시지 다이어그램은 코드 맵 맨 위에 있는 이전 버전의 코드를 기반으로 할 수 있습니다. 이는 마지막으로 맵을 업데이트한 후 코드가 변경되었을 수 있음을 의미합니다. 예를 들어 맵에 대한 호출이 코드에 더 이상 존재하지 않을 수 있습니다. 메시지를 닫은 다음, 맵을 다시 업데이트하기 전에 솔루션을 다시 빌드해 보세요.

외부 코드 매핑

기본적으로 사용자 고유의 코드만 지도에 표시됩니다. 맵에서 외부 코드를 보려면 다음을 수행합니다.

  • 호출 스택 창을 마우스 오른쪽 단추로 클릭하고 외부 코드 표시를 선택합니다.

    호출 스택 창 DebuggerMap_CallStackMenu 사용하여 외부 코드 표시

  • 또는 Visual Studio에서 내 코드만 사용 확인란의 선택을 취소합니다.

    이 옵션은 모든 설정>일반 섹션의 도구(또는 >) > 창에서 사용할 수 있습니다.

    Visual Studio에서 내 코드만 사용 옵션을 선택하는 방법을 보여 주는 스크린샷

    이 옵션은 디버깅일반 섹션의 >(또는 디버그) > 대화 상자에서 사용할 수 있습니다.

    옵션 대화 상자 DebuggerMap_DebugOptions 사용하여 외부 코드 표시

지도의 레이아웃 제어

맵의 레이아웃을 변경해도 코드에 영향을 주지 않습니다.

지도의 레이아웃을 제어하려면 지도 도구 모음에서 레이아웃 메뉴를 선택합니다.

레이아웃 메뉴에서 다음을 수행할 수 있습니다.

  • 기본 레이아웃을 변경합니다.
  • 디버깅할 때 자동 레이아웃 선택을 취소하여 지도 다시 정렬을 자동으로 중지합니다.
  • 증분 레이아웃의 선택을 취소하여 항목을 추가할 때 맵을 최대한 적게 다시 정렬합니다.

코드에 대한 메모 작성

주석을 추가하여 코드에서 발생하는 작업을 추적할 수 있습니다.

메모를 추가하려면 코드 맵을 마우스 오른쪽 단추로 클릭하고새 메모>을 선택한 다음 메모를 입력합니다.

메모에 새 줄을 추가하려면 Shift Enter 키를+ 누릅니.

코드 맵의 호출 스택에 주석 추가 (DebuggerMap_AddComment)

다음 호출 스택으로 맵 업데이트

앱을 다음 중단점으로 실행하거나 함수로 한 단계씩 실행하면 맵에서 새 호출 스택을 자동으로 추가합니다.

다음 호출 스택 DebuggerMap_AddClearCallStack 사용하여 코드 맵 업데이트

맵이 새 호출 스택을 자동으로 추가하지 않도록 하려면 코드 맵 도구 모음에서 코드 맵에 호출 스택 자동 표시을 선택 취소하십시오. 맵은 기존 호출 스택을 계속 강조 표시합니다. 현재 호출 스택을 맵에 수동으로 추가하려면 Ctrl+Shift 키를 누릅니다+`.

맵에 관련 코드 추가

이제 C# 또는 Visual Basic에서 맵을 얻었으므로 필드, 속성 및 기타 메서드와 같은 항목을 추가하여 코드에서 발생하는 작업을 추적할 수 있습니다.

코드에서 메서드 정의로 이동하려면 맵에서 메서드를 두 번 클릭하거나 해당 메서드를 선택하고 F12 키를 누르거나 마우스 오른쪽 단추 로 클릭하고 정의로 이동을 선택합니다.

코드 맵에서 메서드 'DebuggerMap_GoToCodeDefinition'의 코드 정의로 이동합니다.

추적하려는 항목을 맵에 추가하려면 메서드를 마우스 오른쪽 단추로 클릭하고 추적하려는 항목을 선택합니다. 가장 최근에 추가된 항목은 녹색으로 표시됩니다.

호출 스택 코드 맵의 메서드와 관련된 필드 - DebuggerMap_ShowedFields

비고

기본적으로 맵에 항목을 추가하면 클래스, 네임스페이스 및 어셈블리와 같은 부모 그룹 노드도 추가됩니다. 코드 맵 도구 모음에서 부모 포함 단추를 선택하거나 항목을 추가하는 동안 Ctrl 키를 눌러 이 기능을 켜고 끌 수 있습니다.

호출 스택 코드 맵에 있는 메서드의 필드 표시

더 많은 코드를 보려면 맵을 계속 빌드합니다.

필드를 사용하는 메서드를 참조하세요. 호출 스택 코드 맵

호출 스택 코드 맵의 DebuggerMap_FoundAllReferences 필드를 사용하는 메서드

맵을 사용하여 버그 찾기

코드를 시각화하면 버그를 더 빠르게 찾을 수 있습니다. 예를 들어 그리기 앱에서 버그를 조사하고 있다고 가정해 보겠습니다. 선을 그리고 실행 취소하려고 하면 다른 선을 그릴 때까지 아무 일도 발생하지 않습니다.

따라서 , clearundo 메서드에 Repaint중단점을 설정하고 디버깅을 시작하고 다음과 같은 맵을 빌드합니다.

맵에서 Repaint을 제외한 모든 사용자 제스처가 undo를 호출하는 것을 알 수 있습니다. 이는 즉시 작동하지 않는 이유를 undo 설명할 수 있습니다.

버그를 수정하고 앱을 계속 실행하면 맵에서 undo 다음으로 새 호출을 Repaint추가합니다.

코드 맵에 새 메서드 호출을 호출 스택에 추가, DebuggerMap_AddNewCallForRepaint

다른 사용자와 맵 공유

맵을 내보내고, Microsoft Outlook을 사용하여 다른 사용자에게 보내고, 솔루션에 저장하고, 버전 제어로 확인할 수 있습니다.

맵을 공유하거나 저장하려면 코드 맵 도구 모음에서 공유 를 사용합니다.

전화 스택 코드 맵을 다른 사용자와 공유하기