자습서: Visual Studio를 사용하여 C# 코드를 디버그하는 방법 알아보기

이 문서에서는 단계별 연습을 통해 Visual Studio 디버거의 기능을 소개합니다. 디버거 기능을 개략적으로 살펴보려면 디버거 소개를 참조하세요. 앱을 디버그할 때 일반적으로 디버거가 연결된 애플리케이션을 실행하고 있음을 의미합니다. 이 작업을 수행할 때 디버거는 코드가 실행되는 동안 수행하는 작업을 확인하는 여러 가지 방법을 제공합니다. 코드를 단계별로 실행하고, 변수에 저장된 값을 살펴보고, 변수에 대한 조사식을 설정하여 값이 변경되는 경우를 확인하며, 코드의 실행 경로를 검사하고, 코드의 분기가 실행되는지 등을 확인할 수 있습니다. 이 연습이 처음으로 코드를 디버그하려고 시도하는 경우 이 문서를 진행하기 전에 절대 초보자를 위한 디버깅을 읽어보는 것이 좋습니다.

데모 앱은 C#이지만 대부분의 기능은 C++, Visual Basic, F#, Python, JavaScript 및 Visual Studio에서 지원하는 기타 언어에 적용됩니다(F#은 편집 및 계속을 지원하지 않음). F# 및 JavaScript는 자동 창을 지원하지 않습니다.) 스크린샷은 C#에 있습니다.

이 자습서에서 다음을 수행합니다.

  • 디버거 시작 및 중단점 적중
  • 디버거에서 코드를 단계별로 실행하는 명령 학습
  • 데이터 팁 및 디버거 창에서 변수 검사
  • 호출 스택 검사

사전 요구 사항

Visual Studio 2022가 설치되어 있어야 하고 .NET 데스크톱 개발 워크로드가 있어야 합니다.

Visual Studio 2019가 설치되어 있어야 하고 .NET Core 플랫폼 간 개발 워크로드가 있어야 합니다.

아직 Visual Studio를 설치하지 않은 경우 Visual Studio 다운로드 페이지로 이동하여 체험용으로 설치합니다.

워크로드는 설치해야 하지만 Visual Studio는 이미 있는 경우 도구>도구 및 기능 가져오기... 로 이동하면 Visual Studio 설치 관리자가 열립니다. Visual Studio 설치 관리자가 시작됩니다. .NET Core 플랫폼 간 개발 워크로드를 선택한 다음 수정을 선택합니다.

이미 Visual Studio 있지만 .NET 데스크톱 개발 워크로드가 설치되지 않은 경우 도구>도구 및 기능 가져오기... 로 이동하여 Visual Studio 설치 관리자 시작합니다. 그런 다음, Visual Studio 설치 관리자에서 .NET 데스크톱 개발 워크로드를 선택한 다음 수정을 선택합니다.

프로젝트 만들기

먼저 .NET Core 콘솔 애플리케이션 프로젝트를 만듭니다. 아무것도 추가하지 않아도 필요한 모든 템플릿 파일과 함께 프로젝트 형식이 제공됩니다.

  1. Visual Studio를 엽니다. 시작 창이 열려 있지 않으면 파일>시작 창을 선택합니다.

  2. 시작 창에서 새 프로젝트 만들기를 선택합니다.

  1. 새 프로젝트 만들기 창의 검색 상자에 콘솔을 입력합니다. 그런 다음, 언어 목록에서 C# 을 선택한 다음, 플랫폼 목록에서 Windows를 선택합니다.

    언어 및 플랫폼 필터를 적용한 후 .NET Core용 콘솔 앱 템플릿을 선택한 다음, 다음을 선택합니다.

    Screenshot of the C# template for the Console App.

    참고 항목

    콘솔 앱 템플릿이 표시되지 않으면 새 프로젝트를 만들기 창에서 설치할 수 있습니다. 원하는 항목을 찾을 수 없나요? 메시지에서 추가 도구 및 기능 설치 링크를 선택합니다. 그런 다음, Visual Studio 설치 관리자에서 .NET Core 플랫폼 간 개발 워크로드를 선택합니다.

  2. 새 프로젝트 구성 창의 프로젝트 이름 상자에 GetStartedDebugging입력합니다. 그런 후에 다음을 선택합니다.

  3. 권장 대상 프레임워크(.NET 8.0 또는 장기 지원)를 선택한 다음 만들기를 선택합니다.

  1. 새 프로젝트 만들기 창의 검색 상자에 콘솔을 입력합니다. 그런 다음, 언어 목록에서 C# 을 선택한 다음, 플랫폼 목록에서 Windows를 선택합니다.

    언어 및 플랫폼 필터를 적용한 후 콘솔 앱 템플릿을 선택한 다음, 다음을 선택합니다.

    Screenshot of the 'Console Application' template in the 'Create a new project' window of Visual Studio 2022.

    참고 항목

    콘솔 앱 템플릿이 표시되지 않으면 새 프로젝트 만들기 창에서 설치할 수 있습니다. 원하는 항목을 찾을 수 없나요? 메시지에서 추가 도구 및 기능 설치 링크를 선택합니다. 그런 다음, Visual Studio 설치 관리자에서 .NET 데스크톱 개발 워크로드를 선택합니다.

  2. 새 프로젝트 구성 창의 프로젝트 이름 상자에 GetStartedDebugging입력합니다. 그런 후에 다음을 선택합니다.

  3. 추가 정보 창의 프레임워크 드롭다운 메뉴에서 .NET 8.0이 선택되어 있는지 확인하고 만들기를 선택합니다.

Visual Studio에서 새 프로젝트를 엽니다.

애플리케이션 만들기

Program.cs에서 모든 기본 코드를 다음 코드로 바꿉니다.

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

디버거 시작!

  1. 디버그 도구 모음에서 F5(디버그 > 디버깅 시작) 또는 디버깅 시작 버튼Image of the Start Debugging button.을 누릅니다.

    F5 키는 애플리케이션 프로세스에 디버거가 연결된 상태에서 애플리케이션을 시작하지만, 지금은 코드를 검사하기 위한 특별한 작업을 수행하지 않았습니다. 따라서 앱이 로드되고 이 콘솔 출력이 표시됩니다.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    

    이 자습서에서는 디버거를 사용하여 이 앱을 자세히 살펴보고 디버거 기능을 살펴보겠습니다.

  2. 빨간색 중지 단추(Shift + F5)를 눌러 디버거를 중지합니다. Image of the Stop Debugging button.

  3. 콘솔 창에서 키를 눌러 콘솔 창을 닫습니다.

디버거 명령을 실행하는 빠른 방법이기 때문에 대부분 여기서 바로 가기 키를 사용합니다. 도구 모음 또는 메뉴 명령과 같은 동등한 명령도 표시됩니다.

  1. 디버거를 시작하려면 F5를 선택하거나, 표준 도구 모음에서 디버그 대상 단추를 선택하거나, 디버그 도구 모음에서 디버깅 시작 단추를 선택하거나, 메뉴 모음에서 디버그>디버깅 시작을 선택합니다.

    Screenshot of the Debug Target button in the Standard toolbar of Visual Studio 2022.

    F5는 앱 프로세스에 연결된 디버거를 사용하여 앱을 시작합니다. 코드를 검사하기 위해 특별한 작업을 수행하지 않았으므로 앱은 완료될 때까지 실행되고 콘솔 출력이 표시됩니다.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. 디버거를 중지하려면 Shift+F5를 선택하거나, 디버그 도구 모음에서 디버깅 중지 단추를 선택하거나, 메뉴 모음에서 디버그>디버깅 중지를 선택합니다.

    Screenshot of the Stop debugging button in the Debug toolbar of Visual Studio 2022.

  3. 콘솔 창에서 아무 키나 눌러 콘솔 창을 닫습니다.

중단점 설정 및 디버거 시작

  1. for 함수 루프 Main 에서 다음 코드 줄의 왼쪽 여백을 클릭하여 중단점을 설정합니다.

    name += letters[i];

    빨간색 원 Image of a breakpoint.이 중단점을 설정한 위치에 나타납니다.

    중단점은 신뢰할 수 있는 디버깅의 가장 기본적이고 필수적인 기능입니다. 중단점은 변수의 값, 메모리의 동작 또는 코드 분기의 실행 여부를 확인할 수 있도록 Visual Studio에서 실행 중인 코드를 일시 중단해야 하는 위치를 나타냅니다.

  2. F5 키를 누르거나 디버깅 시작 단추를 누릅니. Screenshot of the Start Debugging button. 앱이 시작되고 디버거가 중단점을 설정하는 코드 줄로 실행됩니다.

    Set and hit a breakpoint

    노란색 화살표는 디버거가 일시 중지된 문을 나타내며, 동일한 지점에서 앱 실행을 일시 중단합니다(이 문은 아직 실행되지 않음).

    앱이 아직 실행 되지 않는 경우 F5 는 디버거를 시작하고 첫 번째 중단점에서 중지합니다. 그렇지 않으면 F5 키를 사용하여 다음 중단점까지 애플리케이션을 계속 실행합니다.

    중단점은 자세히 검사하려는 코드 줄 또는 코드 섹션을 아는 경우 유용한 기능입니다. 조건부 중단점과 같이 설정할 수 있는 다양한 중단점 유형에 대한 자세한 정보는 중단점 사용을 참조하세요.

  1. for 함수 루프 Main 에서 다음 코드 줄의 왼쪽 여백을 클릭하여 중단점을 설정합니다.

    name += letters[i];

    중단점을 설정하면 빨간색 원이 나타납니다.

    Screenshot of a breakpoint in Visual Studio 2022.

    중단점은 신뢰할 수 있는 디버깅의 필수적인 기능입니다. 변수의 값, 메모리 동작 또는 코드 분기의 실행 여부를 확인할 수 있도록 Visual Studio에서 실행 중인 코드를 일시 중단해야 하는 위치에 중단점을 설정할 수 있습니다.

  2. 디버깅을 시작하려면 F5를 선택하거나, 표준 도구 모음에서 디버그 대상 단추를 선택하거나, 디버그 도구 모음에서 디버깅 시작 단추를 선택하거나, 메뉴 모음에서 디버그>디버깅 시작을 선택합니다. 앱이 시작되고, 중단점이 설정된 코드 줄에서 디버거가 실행됩니다.

    Screenshot showing a breakpoint in the code editor of Visual Studio 2022, with code execution paused at the breakpoint.

    노란색 화살표는 디버거가 일시 중지된 문을 가리킵니다. 앱 실행은 동일한 지점에서 일시 중지되고 해당 문은 아직 실행되지 않은 상태입니다.

    앱이 실행 되고 있지 않으면 F5 는 첫 번째 중단점에 도달할 때까지 앱을 실행하는 디버거를 시작합니다. 앱이 중단점에서 일시 중지된 경우 F5는 앱을 다음 중단점에 도달할 때까지 계속 실행합니다.

    중단점은 자세히 검사하려는 코드 줄 또는 섹션을 아는 경우 유용한 기능입니다. 조건부 중단점과 같이 설정할 수 있는 다양한 중단점 유형에 대한 자세한 내용은 중단점 사용을 참조하세요.

대부분의 경우 바로 가기 키를 사용합니다. 바로 가기 키는 디버거에서 애플리케이션을 빠르게 실행할 수 있는 좋은 방법입니다(메뉴 명령과 같이 동등한 명령이 괄호 안에 표시되어 있음).

  1. 문에서 name += letters[i] 코드 실행이 일시 중지되는 동안 변수를 letters 마우스로 가리키면 배열 char[10]의 첫 번째 요소 값인 기본값이 표시됩니다.

    변수를 검사할 수 있는 기능은 디버거의 가장 유용한 기능 중 하나이며, 이를 수행하는 다양한 방법이 있습니다. 종종 문제를 디버그하려고 할 때 변수가 특정 시간에 가질 것으로 예상되는 값을 저장하고 있는지 확인하려고 합니다.

  2. 변수에 포함된 모든 요소를 포함하는 속성을 보려면 letters 변수를 확장합니다.

    Screenshot of the debugger paused at the 'name+= letters[I]' statement.

  3. 그런 다음 name 변수 위로 마우스를 이동하면 현재 값(빈 문자열)이 표시됩니다.

  4. F10 키를 두 번 눌러(또는 디버그 > 프로시저 단위 실행 선택) SendMessage 메서드 호출로 이동한 다음 F10 키를 한 번 더 누릅니다.

    F10 키는 앱 코드의 함수 또는 메서드를 한 단계씩 실행하지 않고 디버거를 다음 문으로 진행합니다(코드는 계속 실행되고 있음). SendMessage 메서드 호출에서 F10 키를 눌러 SendMessage에 대한 구현 코드(지금은 관심이 없을 수 있음)를 건너뛰었습니다.

  5. F10 키(또는 디버그>프로시저 단위 실행)를 몇 번 눌러 for 루프를 여러 번 반복하고 중단점에서 다시 일시 중지하고 매번 name 변수 위로 마우스를 이동하여 값을 확인합니다.

    An animated screenshot of the Visual Studio Debugger showing the effect of pressing F10 to

    변수의 값은 for 루프가 반복될 때마다 변경되어 f 값을 표시한 후에 fr, fre 값을 표시합니다. 이 시나리오에서는 디버거가 루프를 빠르게 진행하도록 대신 F5 키를 눌러(또는 디버그>계속 선택) 다음 문이 아닌 중단점으로 이동할 수 있습니다.

    디버깅할 때 변수에 속성 값을 검사 저장하려는 값을 저장하는지 여부를 빠르게 확인하고 데이터 팁이 이를 수행하는 좋은 방법입니다.

  6. 코드 실행이 다시 실행되는 동안기본 메서드의 루프에서 forMain 일시 중지된 경우 메서드 호출에서 SendMessage 일시 중지될 때까지 F11 키를 누릅니다(또는 디버그 > 단계별 실행 선택).

    다음 코드 줄에 있어야 합니다.

    SendMessage(name, a[i]);

  7. F11 키를 한 번 더 눌러 SendMessage 메서드를 한 단계씩 코드 실행합니다.

    노란색 포인터는 SendMessage 메서드로 이동합니다.

    Screenshot of the execution pointer at the SendMessage method.

    F11 키는 한 단계씩 코드 실행 명령으로서 한 번에 하나의 명령문씩 앱을 실행합니다. F11 키는 실행 흐름을 가장 자세히 검사할 수 있는 좋은 방법입니다. 기본적으로 디버거는 비사용자 코드를 건너뜁니다(자세한 내용은 내 코드만 참조).

    메서드 검사를 SendMessage 마쳤으며 메서드에서 벗어나 디버거에 머물고 싶다고 가정해 보겠습니다. 이 작업은 프로시저 나가기 명령을 사용하여 수행할 수 있습니다.

  8. Shift + F11 키(또는 디버그 > 프로시저 나가기)를 누릅니다.

    이 명령은 현재 메서드 또는 함수가 반환될 때까지 앱 실행을 다시 시작하고 디버거를 진행시킵니다.

    SendMessage 메서드 호출에서 일시 중지된 Main 메서드의 for 루프로 다시 이동해야 합니다. 코드를 이동하는 다양한 방법에 대한 자세한 내용은 디버거에서 코드 탐색을 참조하세요.

  1. 문에서 name += letters[i] 코드 실행이 일시 중지되는 동안 변수를 마우스로 가리키 letters 면 배열 크기 및 요소 형식 char[10]을 보여 주는 데이터 팁이 표시됩니다.

    참고 항목

    디버거의 가장 유용한 기능 중 하나는 변수 검사 기능입니다. 문제를 디버그하려고 할 때 변수에서 특정 시간에 예상되는 값을 저장하고 있는지 여부를 확인하려고 하는 경우가 많습니다. 데이터 팁을 보는 것은 이를 확인하는 좋은 방법입니다.

  2. letters 변수를 확장하여 모든 배열 요소와 해당 값을 봅니다.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the element values for the 'letters' array variable.

  3. name 변수 위로 마우스를 이동하면 현재 값(빈 문자열)이 표시됩니다.

  4. 디버거를 다음 문으로 진행하려면 F10을 선택하거나, 디버그 도구 모음에서 프로시저 단위 실행 단추를 선택하거나, 메뉴 모음에서 디버그>프로시저 단위 실행을 선택합니다. F10을 두 번 더 선택하여 SendMessage 메서드 호출을 지나 이동합니다.

    F10은 함수 또는 메서드를 한 단계씩 실행하지 않고 디버거를 진행합니다. 하지만 코드는 계속 실행됩니다. 이런 방식으로 지금은 관심이 없는 SendMessage 메서드의 코드 디버깅을 건너뛰었습니다.

  5. for 루프를 몇 번 반복하려면 F10을 반복해서 선택합니다. 각 루프 반복 중에 중단점에서 일시 중지한 다음 name 변수 위로 마우스를 가져가 데이터 팁에서 해당 값을 확인합니다.

    Screenshot of a debugger data tip in Visual Studio 2022 that shows the string value for the 'name' variable.

    변수의 값은 for 루프가 반복될 때마다 변경되어 f 값을 표시한 후에 fr, fre 값을 표시합니다. 루프에서 디버거를 더 빠르게 진행하려면 F5 키를 대신 선택하여 다음 문 아닌 중단점으로 진행합니다.

  6. 코드 실행이 메서드 루프에서 일시 중지되는 동안 F11을 선택하거나 디버그 도구 모음에서 단계별 실행 단추를 선택하거나, 메서드 호출에 도달할 SendMessage 때까지 메뉴 모음에서 디버그>단계별 실행을 선택합니다.forMain

    디버거는 다음 코드 줄에서 일시 중지해야 합니다.

    SendMessage(name, a[i]);

  7. SendMessage 메서드를 한 단계씩 실행하려면 F11을 다시 선택합니다.

    노란색 포인터는 SendMessage 메서드로 이동합니다.

    Screenshot showing the execution pointer of the debugger within the 'SendMessage' method.

    F11을 사용하면 코드의 실행 흐름을 더 자세히 검사할 수 있습니다. 메서드 호출에서 메서드를 한 단계씩 실행하려면 F11을 선택합니다. 기본적으로 디버거는 비사용자 메서드로의 단계별 실행은 건너뜁니다. 비사용자 코드 디버깅에 대한 자세한 내용은 내 코드만 참조하세요.

    SendMessage 메서드 디버깅을 완료하면 main 메서드의 for 루프로 돌아갈 준비가 된 것입니다.

  8. SendMessage 메서드를 나가려면 Shift+F11을 선택하거나, 디버그 도구 모음에서 프로시저 나가기 단추를 선택하거나, 메뉴 모음에서 디버그>프로시저 나가기를 선택합니다.

    프로시저 나가기는 현재 메서드 또는 함수가 반환될 때까지 앱 실행을 다시 시작하고 디버거를 진행시킵니다.

    메서드 호출 시 for 일시 중지된 메서드 루프 Main 에 노란색 포인터가 SendMessage 다시 표시됩니다. 코드를 이동하는 다양한 방법에 대한 자세한 내용은 디버거에서 코드 탐색을 참조하세요.

  1. F5 키를 눌러 중단점으로 다시 진행합니다.

  2. 코드 편집기에서 아래로 스크롤하여 녹색 클릭까지 실행 단추 Image of the Run to Click button. 가 나타날 때까지 메서드의 메서드 SendMessageConsole.WriteLine 마우스로 가리킵니다. 단추의 도구 설명에는 "실행이 여기로 실행"이 표시됩니다.

    Screenshot of the Run to Click button.

    참고 항목

    클릭할 때 실행 단추는 Visual Studio 2017의 새로운 기능입니다. (녹색 화살표 단추가 표시되지 않으면 이 예에서 F11 키를 대신 사용하여 디버거를 올바른 위치로 이동시킵니다.)

  3. 실행하려면 클릭 단추를 선택합니다. Image of the Run to Click button.

    디버거가 Console.WriteLine 메서드로 이동합니다.

    이 단추 사용은 임시 중단점 설정과 비슷합니다. 클릭 으로 실행은 앱 코드의 표시되는 영역 내에서 빠르게 탐색하는 데 유용합니다(열려 있는 파일에서 선택할 수 있음).

  1. F5 키를 눌러 중단점으로 다시 진행합니다.

  2. 코드 편집기에서 실행 단추가 Console.WriteLine 나타날 때까지 메서드의 SendMessage 메서드 호출을 마우스로 가리킵니다. 단추의 도구 설명에는 "실행이 여기로 실행"이 표시됩니다.

    Screenshot showing the Run to Click button in Visual Studio 2022.

  3. 실행하려면 클릭 단추를 선택합니다. 또는 커서가 Console.WriteLine 문 위에 있을 때 Ctrl+F10을 선택합니다. 또는 Console.WriteLine 메서드 호출을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 커서까지 실행을 선택합니다.

    디버거가 Console.WriteLine 메서드 호출로 이동합니다.

    실행하려면 클릭 단추를 사용하는 것은 임시 중단점을 설정하는 것과 유사하며, 열려 있는 파일의 앱 코드가 표시된 영역 안에서 빠르게 둘러보는 데 유용합니다.

앱을 빠르게 다시 시작

디버그 도구 모음에서 다시 시작 단추를 Image of the Restart App button. 선택합니다(Ctrl + Shift + F5).

다시 시작을 누르면 앱을 중지하고 디버거를 다시 시작하는 것에 비해 시간이 절약됩니다. 디버거가 코드를 실행하여 적중한 첫 번째 중단점에서 일시 중지합니다.

이전에 for 루프 내에서 설정한 중단점에서 디버거가 다시 중지됩니다.

디버거 시작 부분에서 앱을 다시 실행하려면 Ctrl+Shift+F5를 선택하거나, 디버그 도구 모음에서 다시 시작 단추를 선택하거나, 메뉴 모음에서 디버그>다시 시작을 선택합니다.

Screenshot of the Restart button in the Debug toolbar of Visual Studio 2022.

다시 시작은 한 단계로 디버거를 중지한 후 다시 시작합니다. 디버거가 다시 시작되면 루프 내에서 for 이전에 설정한 중단점인 첫 번째 중단점으로 실행된 다음 일시 중지합니다.

자동 및 지역 창을 사용하여 변수 검사

  1. 코드 편집기의 아래쪽에 있는 자동 창을 살펴봅니다.

    닫힌 경우 디버그>Windows>자동을 선택하여 디버거에서 일시 중지된 상태에서 엽니다.

    자동 창에는 변수와 해당 현재 값이 표시됩니다. 자동 창에는 현재 줄 또는 이전 줄에서 사용되는 모든 변수가 표시됩니다(언어별 동작에 대한 설명서 참조).

  2. 그런 다음, 자동 창 옆의 탭에 있는 지역 창을 살펴봅니다.

  3. letters 변수를 확장하여 변수가 포함한 요소를 표시합니다.

    Screenshot of the Locals Window in Visual Studio.

    지역 창에는 현재 범위에 있는 변수, 즉, 현재 실행 컨텍스트가 표시됩니다.

디버깅하는 동안 자동지역 창에 변수 값이 표시됩니다. 창은 디버그 세션 중에만 사용할 수 있습니다. 자동 창에는 디버거가 있는 현재 줄과 이전 줄에 사용된 변수가 표시됩니다. 지역 창에는 일반적으로 현재 함수 또는 메서드인 로컬 범위에 정의된 변수가 표시됩니다.

  1. 디버거가 일시 중지된 동안 코드 편집기의 맨 아래에 있는 자동 창을 확인합니다.

    자동 창이 닫히면 Ctrl+D, A를 선택하거나 메뉴 모음에서 디버그>Windows>자동을 선택합니다.

  2. 디버거가 일시 중지된 상태에서 자동 창 옆에 있는 탭에서 로컬 창을 봅니다.

    로컬 창이 닫히면 Ctrl+D, L을 선택하거나 디버그>Windows>로컬을 선택합니다.

  3. 로컬 창에서 letters 변수를 확장하여 배열 요소와 해당 값을 확인합니다.

    Screenshot of the Locals window in Visual Studio 2022, with the 'letters' array variable expanded.

자동로컬 창에 대한 자세한 내용은 자동 및 로컬 창에서 변수 검사를 참조하세요.

조사식 설정

기본 코드 편집기 창에서 name 변수를 마우스 오른쪽 단추로 클릭하고 조사식 추가를 선택합니다.

코드 편집기의 아래쪽에서 조사식 창이 열립니다. 조사식 창을 사용하여 주시하려는 변수(또는 식)를 지정할 수 있습니다.

이제 name 변수에 설정된 조사식이 있으며, 디버거에서 이동하면서 해당 값의 변화를 확인할 수 있습니다. 다른 변수 창과 달리 조사 창에는 항상 보고 있는 변수가 표시됩니다(범위를 벗어나면 회색으로 표시됨).

코드를 단계별로 실행하는 동안 주시할 변수 또는 식을 지정할 수 있습니다. 이렇게 하려면 해당 변수 또는 식을 조사식 창에 추가합니다.

  1. 디버거가 일시 중지된 동안 name 변수를 마우스 오른쪽 단추로 클릭하고 조사식 추가를 선택합니다.

    조사식 창은 기본적으로 코드 편집기의 아래쪽에서 열립니다.

  2. name 변수에 조사식을 설정했으므로 코드를 단계별로 실행하여 각 for 루프 반복에서 name 변수 값의 변경을 확인합니다.

    다른 변수 창 과 달리 조사식 창에는 항상 보고 있는 변수가 표시됩니다. 범위를 벗어난 변수는 사용할 수 없는 것으로 표시됩니다.

조사식 창에 대한 자세한 내용은 조사 식 창이 있는 조사식 변수를 참조 하세요.

호출 스택 검사

  1. 루프에서 for 코드 실행이 일시 중지되는 동안 호출 스택 창을 선택합니다. 이 창은 기본적으로 오른쪽 아래 창에서 열립니다.

    닫힌 경우 디버그>Windows>호출 스택을 선택하여 디버거에서 일시 중지된 상태에서 엽니다.

  2. SendMessage 메서드에서 디버거가 일시 중지할 때까지 F11을 몇 번 선택합니다. 호출 스택 창을 살펴봅니다.

    Screenshot of the Call Stack window in Visual Studio.

    호출 스택 창에는 메서드와 함수가 호출되는 순서가 표시됩니다. 맨 위쪽의 줄에는 현재 함수가 표시됩니다(이 앱에서는 SendMessage 메서드). 두 번째 줄에는 Main 메서드에서 SendMessage가 호출되었음이 표시됩니다.

    참고

    호출 스택 창은 Eclipse와 같은 일부 IDE의 디버그 관점과 비슷합니다.

    호출 스택은 애플리케이션의 실행 흐름을 검사하고 파악할 수 있는 좋은 방법입니다.

    코드 줄을 두 번 클릭하여 해당 소스 코드를 볼 수 있습니다. 그러면 디버거에서 검사 중인 현재 범위도 변경됩니다. 이 작업은 디버거를 진행하지 않습니다.

    또한 호출 스택 창에서 오른쪽 클릭 메뉴를 사용하여 다른 작업을 수행할 수도 있습니다. 예를 들어 지정된 함수에 중단점을 삽입하고, 커서까지 실행을 사용하여 디버거를 진행시키고, 소스 코드를 검사할 수 있습니다. 자세한 내용은 방법: 호출 스택 검사를 참조하세요.

호출 스택은 메서드 및 함수가 호출되는 순서를 표시하여 앱의 실행 흐름을 이해하는 데 도움이 될 수 있습니다.

  1. 디버거가 for 루프에서 일시 중지되는 동안 기본적으로 코드 편집기의 오른쪽 아래 창에서 열리는 호출 스택 창을 봅니다.

    호출 스택 창이 닫히면 Ctrl+D, C를 선택하거나 메뉴 모음에서 디버그>Windows>호출 스택을 선택합니다.

    호출 스택 창에 현재 Main 메서드에 노란색 포인터가 표시됩니다.

  2. SendMessage 메서드에서 디버거가 일시 중지할 때까지 F11을 몇 번 선택합니다.

    호출 스택 창의 맨 위 줄에는 SendMessage 메서드인 현재 함수가 표시됩니다. 두 번째 줄에는 SendMessage 메서드가 Main 메서드에서 호출되었음이 표시됩니다.

    Screenshot of the Call Stack window in Visual Studio 2022.

    참고 항목

    호출 스택 창은 Eclipse와 같은 일부 IDE의 디버그 관점과 비슷합니다.

    호출 스택 창에서 코드 줄을 두 번 클릭하여 해당 소스 코드로 이동하여 디버거에서 검사 중인 현재 범위를 변경할 수 있습니다. 이 작업은 디버거를 진행하지 않습니다.

    또한 호출 스택 창에서 오른쪽 클릭 메뉴를 사용하여 다른 작업을 수행할 수도 있습니다. 예를 들어 지정된 함수에 중단점을 삽입하거나, 커서까지 실행을 사용하여 디버거를 진행시키거나, 소스 코드로 이동할 수 있습니다.

호출 스택에 대한 자세한 내용은 방법: 호출 스택 검사를 참조하세요.

실행 흐름 변경

  1. F11 키를 두 번 눌러 Console.WriteLine 메서드를 실행합니다.

  2. 메서드 호출에서 SendMessage 디버거가 일시 중지된 상태에서 마우스를 사용하여 노란색 화살표 또는 실행 포인터(왼쪽 여백)를 잡고 포인터를 문으로 Console.WriteLine 한 줄 위로 끕니다.

  3. F11 키를 누릅니다.

    디버거는 메서드를 다시 실행합니다 Console.WriteLine (콘솔 창 출력에 이 작업이 표시됨).

    실행 흐름을 변경하면 디버거를 다시 시작하지 않고도 다른 코드 실행 경로를 테스트하거나 코드를 다시 실행하는 등의 작업을 수행할 수 있습니다.

    경고

    이 기능을 주의 깊게 사용해야 하는 경우가 많으며 도구 설명에 경고가 표시됩니다. 다른 경고도 표시될 수 있습니다. 포인터를 이동하면 애플리케이션을 이전 애플리케이션 상태로 되돌릴 수 없습니다.

  4. F5 키를 눌러 애플리케이션을 계속 실행합니다.

    축하합니다. 이 자습서를 마쳤습니다.

디버그하는 동안 실행 포인터를 이동하여 앱의 흐름을 변경할 수 있습니다.

  1. for 루프의 SendMessage 메서드 호출에서 디버거를 일시 중지한 상태에서 F11을 세 번 선택하여 SendMessage 메서드를 한 단계씩 실행한 다음 Console.WriteLine 메서드를 지나 이동합니다.

    이제 디버거가 SendMessage 메서드의 마지막 닫는 중괄호에서 일시 중지됩니다.

  2. 마우스를 사용하여 왼쪽 여백에 있는 노란색 화살표(실행 포인터)를 누른 다음 포인터를 한 줄 위로 끕니다.

    이제 디버거가 Console.WriteLine 문으로 돌아갑니다.

  3. F11을 선택합니다.

    디버거가 메서드를 Console.WriteLine 다시 실행하면 콘솔 창 출력에 중복된 줄이 표시됩니다.

  4. F5를 선택하여 앱을 계속 실행합니다.

실행 흐름을 변경하면 디버거를 다시 시작하지 않고도 다른 코드 실행 경로를 테스트하거나 코드를 다시 실행하는 등의 작업을 수행할 수 있습니다.

경고

이 기능은 주의하여 사용하세요. 실행 포인터의 도구 설명에 의도하지 않은 결과가 발생할 수 있다는 경고가 표시됩니다. 다른 경고도 표시될 수 있습니다. 실행 포인터를 이동하면 애플리케이션을 이전 상태로 되돌릴 수 없습니다.

실행 흐름을 변경하는 방법에 대한 자세한 내용은 포인터를 이동하여 실행 흐름 변경을 참조하세요.

축하합니다. 이 자습서를 마쳤습니다.

다음 단계

이 자습서에서는 디버거를 시작하고, 코드를 단계별로 실행하며, 변수를 검사하는 방법을 알아보았습니다. 더 많은 정보에 대한 링크와 함께 디버거 기능에 대해 개략적으로 살펴보는 것이 좋습니다.