디버그하는 동안 호출 스택의 시각적 맵 만들기(C#, Visual Basic, C++, JavaScript)Create a visual map of the call stack while debugging (C#, Visual Basic, C++, JavaScript)

디버깅하는 동안 호출 스택을 시각적으로 추적할 코드 맵을 만듭니다.Create a code map to visually trace the call stack while you're debugging. 맵을 기록해 두면 코드에서 어떤 작업을 하고 있는지 추적하여 버그를 찾는 데 집중할 수 있습니다.You can make notes on the map to track what the code is doing, so you can focus on finding bugs.

연습은 다음 비디오를 시청하세요. 비디오: 코드 맵 디버거 통합을 사용하여 시각적으로 디버그(Channel 9)For a walkthrough, watch this video: Video: Debug visually with Code Map debugger integration (Channel 9)

코드 맵에서 사용할 수 있는 명령 및 작업에 관한 자세한 내용은 코드 맵 찾아보기 및 다시 정렬을 참조하세요.For details of commands and actions you can use with code maps, see Browse and rearrange code maps.

중요

Visual Studio Enterprise Edition에서만 코드 맵을 만들 수 있습니다.You can create code maps only in Visual Studio Enterprise edition.

다음은 코드 맵을 간략하게 살펴보는 것입니다.Here's a quick look at a code map:

코드 맵의 호출 스택으로 디버그Debugging with call stacks on code maps

호출 스택 매핑Map the call stack

  1. Visual Studio Enterprise C#, Visual Basic, C++ 또는 JavaScript 프로젝트에서 디버그 > 디버깅 시작 을 선택하거나 F5 키를 눌러 디버깅을 시작합니다.In a Visual Studio Enterprise C#, Visual Basic, C++, or JavaScript project, start debugging by selecting Debug > Start Debugging or pressing F5.

  2. 앱이 중단 모드로 전환되거나 한 단계씩 함수를 실행한 후 디버그 > 코드 맵 을 선택하거나 Ctrl+Shift+ ` 를 누릅니다.After your app enters break mode or you step into a function, select Debug > Code Map, or press Ctrl+Shift+`.

    현재 호출 스택은 새 코드 맵에 주황색으로 표시됩니다.The current call stack appears in orange on a new code map:

    코드 맵의 호출 스택 참조See call stack on code map

디버깅을 계속할 때 코드 맵이 자동으로 업데이트됩니다.The code map updates automatically as you continue debugging. 맵 항목 또는 레이아웃을 변경해도 코드에는 영향을 주지 않습니다.Changing map items or layout doesn't affect the code in any way. 맵에서 이름 바꾸기, 이동 또는 제거 기능을 자유롭게 사용할 수 있습니다.Feel free to rename, move, or remove anything on the map.

항목에 관한 자세한 정보를 보려면 해당 항목을 가리키고 항목의 도구 설명을 확인합니다.To get more information about an item, hover over it and look at the item's tooltip. 도구 모음에서 범례 를 선택하여 각 아이콘의 의미를 알아볼 수도 있습니다.You can also select Legend in the toolbar to learn what each icon means.

코드 맵 범례Code Map Legend

참고

코드 맵 위쪽에 있는 다이어그램이 코드의 이전 버전을 기반으로 할 수 있습니다. 라는 메시지는 지도를 마지막으로 업데이트한 후 코드가 변경되었을 수 있음을 의미합니다.The message The diagram may be based on an older version of the code at the top of the code map means that the code might have changed after you last updated the map. 예를 들어 맵에 대한 호출이 더 이상 코드에 없는 경우가 있습니다.For example, a call on the map might not exist in code anymore. 메시지를 닫은 다음 맵을 다시 업데이트하기 전에 솔루션 다시 빌드를 시도합니다.Close the message, then try rebuilding the solution before updating the map again.

맵 외부 코드Map external code

기본적으로 맵에는 고유한 코드만 나타납니다.By default, only your own code appears on the map. 맵에서 외부 코드를 보려면:To see external code on the map:

  • 호출 스택 창에서 마우스 오른쪽 단추를 클릭하고 외부 코드 표시 를 선택합니다.Right-click in the Call Stack window and select Show External Code:

    호출 스택 창을 사용하여 외부 코드 표시Display external code using the Call Stack window

  • 또는 Visual Studio Tools내 코드만 사용(또는 디버그) > 옵션 > 디버깅 의 선택을 취소합니다.Or, deselect Enable Just My Code in Visual Studio Tools (or Debug) > Options > Debugging:

    옵션 대화 상자를 사용하여 외부 코드 표시Show external code using Options dialog

맵 레이아웃 제어Control the map's layout

맵 레이아웃을 변경해도 코드에 영향을 미치지 않습니다.Changing the map's layout doesn't affect the code in any way.

맵 레이아웃을 제어하려면 맵 도구 모음에서 레이아웃 메뉴를 선택합니다.To control the map's layout, select the Layout menu on the map toolbar.

레이아웃 메뉴에서 다음을 수행할 수 있습니다.In the Layout menu, you can:

  • 기본 레이아웃을 변경합니다.Change the default layout.
  • 디버깅 시 자동으로 레이아웃 지정 의 선택을 취소하여 맵을 자동으로 다시 정렬하는 기능을 중지합니다.Stop rearranging the map automatically, by deselecting Automatically Layout when Debugging.
  • 증분 레이아웃 의 선택을 취소하여 항목을 추가할 때 최소한으로 맵을 다시 정렬합니다.Rearrange the map as little as possible when you add items, by deselecting Incremental Layout.

코드에 대해 메모하기Make notes about the code

주석을 추가하여 코드에서 수행되는 작업을 추적할 수 있습니다.You can add comments to track what's happening in the code.

주석을 추가하려면 코드 맵을 마우스 오른쪽 단추로 클릭하고 편집 > 새 주석 을 선택한 다음, 주석을 입력합니다.To add a comment, right-click in the code map and select Edit > New Comment, then type the comment.

주석에 새 줄을 추가하려면 Shift+Enter 를 누릅니다.To add a new line in a comment, press Shift+Enter.

코드 맵의 호출 스택에 주석 추가Add comment to call stack on code map

다음 호출 스택과 함께 맵 업데이트Update the map with the next call stack

앱을 다음 중단점까지 실행하거나 한 단계씩 함수를 실행하면 맵이 새 호출 스택을 자동으로 추가합니다.As you run your app to the next breakpoint or step into a function, the map adds new call stacks automatically.

다음 호출 스택으로 코드 맵 업데이트Update code map with next call stack

맵이 새 호출 스택을 자동으로 추가하는 기능을 중지하려면 코드 맵 도구 모음에서 코드 맵에 호출 스택을 자동으로 표시를 선택합니다.To stop the map from adding new call stacks automatically, select Show call stack on code map automatically on the code map toolbar. 맵은 기존 호출 스택을 계속 강조 표시합니다.The map continues to highlight existing call stacks. 맵에 현재 호출 스택을 수동으로 추가하려면 Ctrl+Shift+ ` 를 누릅니다.To manually add the current call stack to the map, press Ctrl+Shift+`.

이제 C# 또는 Visual Basic에서 맵을 가져왔으므로 필드, 속성 및 기타 메서드 같은 항목을 추가하여 코드에서 수행되는 작업을 추적할 수 있습니다.Now that you've got a map, in C# or Visual Basic, you can add items like fields, properties, and other methods, to track what's happening in the code.

코드에서 메서드 정의로 이동하려면 맵에서 메서드를 두 번 클릭하거나, 해당 메서드를 선택하고 F12 키를 누르거나, 메서드를 마우스 오른쪽 단추로 클릭하고 정의로 이동 을 선택합니다.To go to the definition of a method in the code, double-click the method in the map, or select it and press F12, or right-click it and select Go To Definition.

코드 맵의 메서드에 대한 코드 정의로 이동Go to code definition for a method on code map

추적할 항목을 맵에 추가하려면 메서드를 마우스 오른쪽 단추로 클릭하고 추적할 항목을 선택합니다. 가장 최근 추가된 항목은 녹색으로 표시됩니다.To add items that you want to track to the map, right-click a method and select the items you want to track. The most recently added items appear in green.

호출 스택 코드 맵의 메서드와 관련된 필드Fields related to a method on call stack code map

참고

기본적으로 맵에 항목을 추가하면 클래스, 네임스페이스 및 어셈블리와 같은 부모 그룹 노드도 추가됩니다.By default, adding items to the map also adds the parent group nodes such as the class, namespace, and assembly. 코드 맵 도구 모음에서 부모 포함 단추를 선택하거나 항목을 추가하는 동안 Ctrl 키를 눌러 이 기능을 켜고 끌 수 있습니다.You can turn this feature off and on by selecting the Include Parents button on the code map toolbar, or by pressing Ctrl while you add items.

호출 스택 코드 맵의 메서드에서 필드 표시Show fields in a method on call stack code map

더 많은 코드를 보려면 맵 빌드를 계속합니다.Continue building the map to see more code.

필드를 사용하는 메서드 표시: 호출 스택 코드 맵See methods that use a field: call stack code map

호출 스택 코드 맵에서 필드를 사용하는 메서드Methods that use a field on call stack code map

맵을 사용하여 버그 찾기Find bugs using the map

코드를 시각화하면 버그를 더 빠르게 찾을 수 있습니다.Visualizing your code can help you find bugs faster. 예를 들어 드로잉 앱에서 버그를 조사한다고 가정하겠습니다.For example, suppose you're investigating a bug in a drawing app. 선을 그렸다가 취소하려는 경우 다른 선을 그릴 때까지 아무 것도 발생하지 않습니다.When you draw a line and try to undo it, nothing happens until you draw another line.

따라서 clear, undoRepaint 메서드에서 중단점을 설정하고, 디버깅을 시작하고, 다음과 같은 맵을 빌드합니다.So you set breakpoints in the clear, undo, and Repaint methods, start debugging, and build a map like this one:

코드 맵에 다른 호출 스택 추가Add another call stack to code map

Repaint를 제외하고 맵 호출 undo에 대한 모든 사용자 제스처를 확인할 수 있습니다.You notice that all the user gestures on the map call Repaint, except for undo. undo가 즉시 작동하지 않는 이유를 이해할 수 있을 것입니다.This might explain why undo doesn't work immediately.

버그를 수정하고 앱 실행을 계속한 후에 맵은 undo의 새 호출을 Repaint에 추가합니다.After you fix the bug and continue running the app, the map adds the new call from undo to Repaint:

코드 맵의 호출 스택에 새 메서드 호출 추가Add new method call to call stack on code map

다른 사용자와 맵 공유Share the map with others

맵을 내보내고, Microsoft Outlook을 사용하여 다른 사용자에게 보내고, 솔루션에 저장하고, 버전 제어에 체크 인할 수 있습니다.You can export a map, send it to others with Microsoft Outlook, save it to your solution, and check it into version control.

맵을 공유하거나 저장하려면 코드 맵 도구 모음에서 공유 를 사용합니다.To share or save the map, use Share in the code map toolbar.

다른 사용자와 호출 스택 코드 맵 공유Share call stack code map with others

참조See also

솔루션 전체의 종속성 매핑Map dependencies across your solutions

코드 맵을 사용하여 애플리케이션 디버그Use code maps to debug your applications

코드 맵 분석기를 사용하여 잠재적 문제 찾기Find potential problems using code map analyzers

코드 맵 찾아보기 및 다시 정렬Browse and rearrange code maps