코드 맵에서 특성 코드의 종속성

코드의 특정 종속성을 파악하려는 경우 코드 맵을 만들어 해당 코드를 시각화합니다(Visual Studio Ultimate에만 해당됨). 그런 다음 코드 옆에 표시되는 맵을 사용하여 이러한 관계를 탐색할 수 있습니다. 그러면 작업을 하면서 코드 내의 현재 위치를 추적할 수 있습니다.

코드 맵 - 코드의 맵 관계

녹색 화살표는 편집기에서 커서 위치를 보여줍니다. 맵에 종이처럼 기록할 수 있습니다.

코드 맵을 사용하면 많은 코드베이스, 익숙하지 않은 코드 또는 레거시 코드에서 길을 잃는 것을 방지할 수 있습니다. 예를 들어, 디버깅 시 여러 파일 및 프로젝트에서 코드를 확인해야 합니다. 코드 맵을 사용하면 이러한 코드를 탐색하고 그 사이의 관계를 확인할 수 있습니다. 이 코드를 모두 기억하거나 파일 추적을 유지하거나 종이에 별도의 다이어그램을 그리지 않아도 됩니다. 작업을 중단할 경우 코드 맵으로 작업 중인 코드의 메모리를 새로 고칩니다.

코드 맵을 만들거나 열기

코드 맵을 만들려면 Visual Studio Ultimate 2013과 Visual C# .NET, Visual Basic .NET, Microsoft Dynamics AX용 X++ 또는 C++ 코드(제한적 지원)가 포함된 솔루션이 필요합니다. 색으로 구분된 관계를 가져오려면 Visual Studio 2013 업데이트 3이 필요합니다. X++ 코드 및 여러 앱에서 공유되는 코드를 매핑하려면 Visual Studio 2013 업데이트 2 이상이 필요합니다.

코드 맵을 만들 수 있는 방법은 다음과 같습니다.

  • 솔루션 탐색기에서 소스 파일 또는 이진 파일과 같은 항목을 마우스 오른쪽 단추로 클릭하고 코드 맵에 표시를 선택합니다. 이렇게 하면 선택된 항목에 대해 코드 맵을 만듭니다.

  • 소스 파일 또는 이진 파일과 같은 항목을 솔루션 탐색기에서 열려 있는 코드 맵으로 끌어 해당 항목을 맵에 포함하거나 맵에서 강조 표시합니다.

  • 편집기 창의 빈 영역을 마우스 오른쪽 단추로 클릭하고 코드 맵에 표시를 선택합니다. 이렇게 하면 새로운 빈 코드 맵을 만듭니다.

  • 편집기 창에서 개체 또는 클래스를 마우스 오른쪽 단추로 클릭하고 코드 맵에 표시를 선택합니다. 이렇게 하면 선택된 항목에 대해 코드 맵을 만듭니다. 이 메뉴를 사용하여 코드 맵에 대한 참조를 모두 찾거나 관련된 항목을 코드 맵에 표시할 수도 있습니다.

  • 응용 프로그램이 일시 중지되면 디버그 메뉴에서 코드 맵 단추를 클릭합니다.

  • 열려 있는 IntelliTrace 파일에서 만들거나 아키텍처 메뉴에서 종속성 그래프로 만듭니다.

Visual Studio Premium 2013 또는 Visual Studio Professional 2013을 사용하여 코드 맵을 보고, 제한적으로 편집하고, 탐색할 수 있습니다.

Premium 또는 Professional 사용자와 함께 맵을 사용하기 전에 숨겨진 항목, 확장된 그룹 및 그룹 간 링크 등의 모든 항목이 맵에 표시되어 있어야 합니다.

진행 중인 코드 맵 확인: 코드 맵으로 복잡한 코드 이해하기(Channel 9)

문제 이해

작업 중인 드로잉 프로그램에 버그가 있다고 가정합니다. 버그를 재현하려면 Visual Studio Ultimate에서 솔루션을 열고 F5 키를 눌러 디버깅을 시작합니다.

선을 그리고 마지막 획 실행 취소를 선택하면 다음 선을 그릴 때까지 아무 일도 일어나지 않습니다.

코드 맵 - 버그 재현

따라서 Undo 메서드를 검색하여 조사를 시작합니다. PaintCanvas 클래스에서 찾습니다.

코드 맵 - 코드 찾기

코드 매핑 시작

이제 undo 메서드 및 관계 매핑을 시작합니다. 코드 편집기에서 새 코드 맵을 참조하는 undo 메서드와 필드를 추가합니다. 새 맵을 만들 경우 코드를 인덱싱하는 데 약간의 시간이 걸립니다. 이렇게 하면 이후 작업 실행이 빨라집니다.

코드 맵 - 메서드 및 관련 필드 표시

녹색 강조 표시에는 맵에 마지막으로 추가된 항목이 표시됩니다.녹색 화살표는 코드에서 커서의 위치를 보여줍니다.항목 사이의 화살표는 다양한 관계를 나타냅니다.도구 설명을 검토하여 맵에서 항목에 대한 더 자세한 정보를 얻을 수 있습니다.

코드 맵 - 도구 설명 표시

맵에서 코드 탐색 및 검사

각 필드의 코드 정의를 보려면 맵의 필드를 두 번 클릭하거나 필드를 선택하고 F12 키를 누릅니다. 녹색 화살표를 누르면 맵의 항목 사이에서 이동합니다. 코드 편집기의 커서를 눌러도 자동으로 이동할 수 있습니다.

코드 맵 - 필드 정의 검사

코드 맵 - 필드 정의 검사

코드 편집기에서 커서를 이동하여 맵의 녹색 화살표를 이동할 수도 있습니다.

코드 조각 간의 관계 이해

이제 history 및 paintObjects 필드와 상호 작용하는 다른 코드에 대해 알아 보려고 합니다. 이러한 필드를 참조하는 모든 메서드를 맵에 추가할 수 있습니다. 맵에서 또는 코드에서 수행할 수 있습니다.

코드 맵 - 모든 참조 찾기

레이아웃을 변경하여 관계 흐름을 재정렬하고 맵을 읽기 쉽도록 만듭니다. 또한 항목을 끌어서 항목을 맵 주위로 이동할 수도 있습니다.

코드 맵 - 레이아웃 변경

증분 레이아웃은 기본적으로 사용하도록 설정되어 있습니다.이 설정은 새 항목을 추가할 때 맵을 가능한 적게 다시 정렬합니다.새 항목을 추가할 때마다 전체 맵을 다시 정렬하려면 증분 레이아웃을 해제합니다.

코드 맵 - 레이아웃 변경

이러한 메서드를 살펴보겠습니다. 맵에서 PaintCanvas 메서드를 두 번 클릭하거나 이 메서드를 선택하고 F12를 누릅니다. 이 메서드가 빈 목록으로 history 및 paintObjects를 만드는 것을 볼 수 있습니다.

코드 맵 - 메서드 정의 검사

이제 같은 단계를 반복하여 clear 메서드 정의를 검사합니다. clear가 paintObjects 및 history와 함께 몇 가지 작업을 수행하는 것을 볼 수 있습니다. 그런 다음 Repaint 메서드를 호출합니다.

코드 맵 - 메서드 정의 검사

이제 addPaintObject 메서드 정의를 검사합니다. 또한 history 및 paintObjects도 사용하여 일부 작업을 수행합니다. Repaint도 호출합니다.

코드 맵 - 메서드 정의 검사

맵을 검토하여 문제 찾기

history 및 paintObjects를 수정하는 모든 메서드가 Repaint를 호출하는 것 같습니다. undo가 동일한 필드를 수정함에도 불구하고 Repaint 메서드는 아직 undo를 호출하지 않습니다. 따라서 Repaint에서 undo를 호출하여 이 문제를 해결할 수 있다고 생각합니다.

코드 맵 - 누락된 메서드 호출 찾기

누락된 호출을 표시하는 맵이 없는 경우 특히 코드가 복잡한 경우 해당 문제는 찾기 더 어려울 수 있습니다.

검색 및 다음 단계 공유

사용자 또는 다른 작업자가 버그를 수정하기 전에 문제 해결 방법을 보여주는 맵에 메모를 만들 수 있습니다.

코드 맵 - 후속 작업을 위한 주석 및 플래그 항목

예를 들어 맵에 주석을 추가하고 색을 사용하여 항목에 플래그를 지정할 수 있습니다.

코드 맵 - 주석 및 플래그가 지정된 항목

Microsoft Outlook이 설치되어 있으면 맵을 다른 사람에게 전자 메일로 보낼 수 있습니다. 또한 맵을 이미지 또는 다른 형식으로 내보낼 수도 있습니다.

코드 맵 - 공유, 내보내기, 메일

문제를 해결하고 수행했던 작업 표시

이 버그를 해결하려면 Repaint에 대한 호출을 undo에 추가합니다.

코드 맵 - 누락된 메서드 호출 추가

수정을 확인하려면 디버깅 세션을 다시 시작하고 버그를 재현해 봅니다. 이제 마지막 획 실행 취소를 선택하면 정상적으로 작동하며 올바로 수정되었는지 확인할 수 있습니다.

코드 맵 - 코드 수정 확인

맵을 업데이트하여 수정 내용을 보여줄 수 있습니다.

코드 맵 - 누락된 메서드 호출로 맵 업데이트

이제 맵에 실행 취소다시 그리기 간의 링크가 표시됩니다.

코드 맵 - 메서드 호출로 업데이트된 맵

참고

맵을 업데이트하면 맵을 만드는 데 사용한 코드 인덱스가 업데이트되었음을 나타내는 메시지가 나타날 수 있습니다.누군가가 코드를 변경하여 맵이 현재 코드와 일치하지 않음을 의미합니다.이 경우 맵을 업데이트할 수 없는 것은 아니지만 맵을 다시 만들어서 코드와 일치하는지 확인해야 할 수 있습니다.

이제 조사가 완료되었습니다. 코드를 매핑하여 문제를 성공적으로 발견하고 해결했습니다. 코드 주위를 탐색하고 배운 내용을 기억하는 데 도움이 되며 문제를 해결하는 단계를 보여 주는 맵도 있습니다.

참고 항목

개념

Visual Studio에서 디버깅하는 동안 호출 스택의 맵 메서드

코드 시각화