디버깅하는 동안 호출 스택을 시각적으로 추적하는 코드 맵을 만듭니다. 맵에서 노트를 작성하여 코드가 수행하는 작업을 추적할 수 있으므로 버그를 찾는 데 집중할 수 있습니다.
코드 맵에서 사용할 수 있는 명령 및 작업에 대한 자세한 내용은 코드 맵 찾아보기 및 다시 정렬을 참조하세요.
중요합니다
Visual Studio Enterprise 버전에서만 코드 맵을 만들 수 있습니다.
다음은 코드 맵을 간단히 살펴보는 것입니다.
호출 스택 매핑
Visual Studio Enterprise C#, Visual Basic, C++또는 JavaScript 프로젝트에서 디버그> 시작 디버깅을 선택하거나 F5 키를 눌러디버깅을 시작합니다.
앱이 중단 모드로 전환되거나 함수를 한 단계씩 실행한 후코드 맵>를 선택하거나 Ctrl+Shift 키를+` 누릅니다.
현재 호출 스택은 새 코드 맵에 주황색으로 표시됩니다.
디버깅을 계속하면 코드 맵이 자동으로 업데이트됩니다. 맵 항목 또는 레이아웃을 변경해도 코드에 영향을 주지 않습니다. 지도에서 자유롭게 이름을 바꾸거나 이동하거나 제거할 수 있습니다.
항목에 대한 자세한 내용을 보려면 항목 위로 마우스를 가져가서 항목의 도구 설명을 확인합니다. 도구 모음에서 범 례를 선택하여 각 아이콘의 의미를 알아볼 수도 있습니다.
비고
메시지 다이어그램은 코드 맵 맨 위에 있는 이전 버전의 코드를 기반으로 할 수 있습니다. 이는 마지막으로 맵을 업데이트한 후 코드가 변경되었을 수 있음을 의미합니다. 예를 들어 맵에 대한 호출이 코드에 더 이상 존재하지 않을 수 있습니다. 메시지를 닫은 다음, 맵을 다시 업데이트하기 전에 솔루션을 다시 빌드해 보세요.
외부 코드 매핑
기본적으로 사용자 고유의 코드만 지도에 표시됩니다. 맵에서 외부 코드를 보려면 다음을 수행합니다.
호출 스택 창을 마우스 오른쪽 단추로 클릭하고 외부 코드 표시를 선택합니다.
또는 Visual Studio에서 내 코드만 사용 확인란의 선택을 취소합니다.
이 옵션은 모든 설정>일반 섹션의 도구(또는 >) > 창에서 사용할 수 있습니다.
이 옵션은 디버깅일반 섹션의 >(또는 디버그) > 대화 상자에서 사용할 수 있습니다.
지도의 레이아웃 제어
맵의 레이아웃을 변경해도 코드에 영향을 주지 않습니다.
지도의 레이아웃을 제어하려면 지도 도구 모음에서 레이아웃 메뉴를 선택합니다.
레이아웃 메뉴에서 다음을 수행할 수 있습니다.
- 기본 레이아웃을 변경합니다.
- 디버깅할 때 자동 레이아웃 선택을 취소하여 지도 다시 정렬을 자동으로 중지합니다.
- 증분 레이아웃의 선택을 취소하여 항목을 추가할 때 맵을 최대한 적게 다시 정렬합니다.
코드에 대한 메모 작성
주석을 추가하여 코드에서 발생하는 작업을 추적할 수 있습니다.
메모를 추가하려면 코드 맵을 마우스 오른쪽 단추로 클릭하고새 메모>을 선택한 다음 메모를 입력합니다.
메모에 새 줄을 추가하려면 Shift Enter 키를+ 누릅니다.
다음 호출 스택으로 맵 업데이트
앱을 다음 중단점으로 실행하거나 함수로 한 단계씩 실행하면 맵에서 새 호출 스택을 자동으로 추가합니다.
맵이 새 호출 스택을 자동으로 추가하지 않도록 하려면 코드 맵 도구 모음에서
을 선택 취소하십시오. 맵은 기존 호출 스택을 계속 강조 표시합니다. 현재 호출 스택을 맵에 수동으로 추가하려면 Ctrl+Shift 키를 누릅니다+`.
맵에 관련 코드 추가
이제 C# 또는 Visual Basic에서 맵을 얻었으므로 필드, 속성 및 기타 메서드와 같은 항목을 추가하여 코드에서 발생하는 작업을 추적할 수 있습니다.
코드에서 메서드 정의로 이동하려면 맵에서 메서드를 두 번 클릭하거나 해당 메서드를 선택하고 F12 키를 누르거나 마우스 오른쪽 단추 로 클릭하고 정의로 이동을 선택합니다.
코드 맵에서 메서드 'DebuggerMap_GoToCodeDefinition'의 코드 정의로 이동합니다.
추적하려는 항목을 맵에 추가하려면 메서드를 마우스 오른쪽 단추로 클릭하고 추적하려는 항목을 선택합니다. 가장 최근에 추가된 항목은 녹색으로 표시됩니다.
비고
기본적으로 맵에 항목을 추가하면 클래스, 네임스페이스 및 어셈블리와 같은 부모 그룹 노드도 추가됩니다. 코드 맵 도구 모음에서 부모 포함 단추를 선택하거나 항목을 추가하는 동안 Ctrl 키를 눌러 이 기능을 켜고 끌 수 있습니다.
더 많은 코드를 보려면 맵을 계속 빌드합니다.
맵을 사용하여 버그 찾기
코드를 시각화하면 버그를 더 빠르게 찾을 수 있습니다. 예를 들어 그리기 앱에서 버그를 조사하고 있다고 가정해 보겠습니다. 선을 그리고 실행 취소하려고 하면 다른 선을 그릴 때까지 아무 일도 발생하지 않습니다.
따라서 , clear및 undo 메서드에 Repaint중단점을 설정하고 디버깅을 시작하고 다음과 같은 맵을 빌드합니다.
맵에서 Repaint을 제외한 모든 사용자 제스처가 undo를 호출하는 것을 알 수 있습니다. 이는 즉시 작동하지 않는 이유를 undo 설명할 수 있습니다.
버그를 수정하고 앱을 계속 실행하면 맵에서 undo 다음으로 새 호출을 Repaint추가합니다.
다른 사용자와 맵 공유
맵을 내보내고, Microsoft Outlook을 사용하여 다른 사용자에게 보내고, 솔루션에 저장하고, 버전 제어로 확인할 수 있습니다.
맵을 공유하거나 저장하려면 코드 맵 도구 모음에서 공유 를 사용합니다.