다음을 통해 공유


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

디버깅하는 동안 호출 스택을 시각적으로 추적할 코드 맵을 만듭니다. 맵을 기록해 두면 코드에서 어떤 작업을 하고 있는지 추적하여 버그를 찾는 데 집중할 수 있습니다.

코드 맵의 호출 스택으로 디버그

필요한 사항:

참조 항목: 비디오: 코드 맵 디버거 통합으로 시각적 디버깅(채널 9) • Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map • Q & A

호출 스택 매핑

  1. 디버깅을 시작합니다. (키보드: F5)

  2. 앱이 중단 모드로 들어가거나 한 단계씩 함수를 실행한 후 코드 맵을 선택합니다. (키보드: Ctrl + Shift + `)

    호출 스택 매핑을 시작할 코드 맵 선택

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

    코드 맵의 호출 스택 참조

    디버깅하는 동안 맵이 자동으로 업데이트됩니다. Update the map with the next call stack을 참조하십시오.

코드에 대해 메모하기

코드 내용을 추적하기 위한 주석을 추가합니다. 주석에 새 줄을 추가하려면 Shift + Return을 누릅니다.

코드 맵의 호출 스택에 설명 추가

다음 호출 스택과 함께 맵 업데이트

응용 프로그램을 다음 중단점까지 실행하거나 함수로 한 단계씩 실행합니다. 맵은 새로운 호출 스택을 추가합니다.

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

맵에 관련 코드 추가

맵이 완성되었습니다. 다음 단계는 무엇입니까? Visual C# .NET 또는 Visual Basic .NET으로 작업하는 경우 코드에서 발생한 사건을 추적하기 위해 필드, 속성 및 기타 메서드 등의 항목을 추가합니다.

코드 정의를 보려면 메서드를 두 번 클릭합니다. (키보드: 맵에서 메서드를 선택하고 F12를 누릅니다.)

코드 맵의 메서드에 대한 코드 정의로 이동

맵에서 추적할 항목을 추가합니다.

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

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

여기서 어떤 메서드가 동일한 필드를 사용하는지 쉽게 확인할 수 있습니다. 가장 최근 추가된 항목은 녹색으로 표시됩니다.

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

필드를 사용하는 메서드 표시: 호출 스택 코드 맵

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

맵을 사용하여 버그 찾기

코드를 시각화하면 버그를 더 빠르게 찾을 수 있습니다. 예를 들어 드로잉 프로그램에서 버그를 조사한다고 가정하겠습니다. 선을 그렸다가 취소하려는 경우 다른 선을 그릴 때까지 아무 것도 발생하지 않습니다.

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

코드 맵에 다른 호출 스택 추가

undo를 제외하고 맵 호출 Repaint에 대한 모든 사용자 제스처를 확인할 수 있습니다. undo가 즉시 작동하지 않는 이유를 이해할 수 있을 것입니다.

버그를 수정하고 프로그램 실행을 계속한 후에 맵은 undo의 새 호출을 Repaint에 추가합니다.

코드 맵의 호출 스택에 새 메서드 호출 추가

Q & A

  • 모든 호출이 지도에 표시되지 않습니다. 이유

    기본적으로 맵에는 코드만 나타납니다. 외부 코드를 보려면 호출 스택 창에서 켜거나 Visual Studio 디버깅 옵션에서 내 코드만 사용을 해제합니다.

  • 맵을 변경하면 코드에 영향이 있습니까?

    맵 변경은 어떤 방식으로도 코드에 영향을 미치지 않습니다. 맵에서 이름 바꾸기, 이동 또는 제거 기능을 자유롭게 사용할 수 있습니다.

  • "다이어그램이 코드의 이전 버전을 기반으로 할 수 있습니다."라는 메시지의 의미는 무엇입니까?

    지도를 마지막으로 업데이트한 후 코드가 변경되었을 수 있습니다. 예를 들어 맵에 대한 호출이 더 이상 코드에 없는 경우가 있습니다. 메시지를 닫은 다음 맵을 다시 업데이트하기 전에 솔루션 다시 빌드를 시도합니다.

  • 맵 레이아웃을 어떻게 제어해야 합니까?

    매핑 도구 모음에서 레이아웃을 엽니다.

    • 기본 레이아웃을 변경합니다.

    • 맵을 자동으로 다시 정렬하는 것을 중지하려면 디버깅할 때 자동 레이아웃을 해제합니다.

    • 항목을 추가할 때 최소한으로 맵을 다시 정렬하려면 증분 레이아웃을 해제합니다.

  • 다른 사용자와 맵을 공유할 수 있습니까?

    맵을 내보내고 다른 사용자에게 전송하거나(Microsoft Outlook이 있는 경우) 솔루션에 저장하여 Team Foundation 버전 제어로 체크 인할 수 있습니다.

    다른 사용자와 호출 스택 코드 맵 공유

  • 맵에 새 호출 스택이 자동으로 추가되지 않게 하려면 어떻게 해야 합니까?

    맵 도구 모음에서 단추 - 코드 맵에 호출 스택을 자동으로 표시를 선택합니다. 맵에 현재 호출 스택을 수동으로 추가하려면 Ctrl + Shift + **'**를 누릅니다.

    디버깅하는 동안 맵은 기존 호출 스택을 맵에 계속해서 강조표시를 합니다.

  • 항목 아이콘 및 화살표는 무슨 의미입니까?

    항목에 대한 자세한 정보를 얻으려면 항목의 도구 설명을 참조하십시오. 또한 범례를 확인하여 각 아이콘의 의미를 알아 볼 수도 있습니다.

    호출 스택 코드 맵에 있는 아이콘의 의미

참조 항목: Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map