63. 부록 A. 디버거 사용하기

  • 13 minutes to read

요즘은 많은 개발 도구가 디버거 기능을 제공하지만, 오래전부터 C# 개발 환경에서는 Visual Studio의 위대한 디버거 기능이 강점입니다. 이번 부록에서는 Visual Studio의 디버거 기능에 대해서 알아보겠습니다.

63.1. 버그

여러 가지 프로그램을 사용하다 보면 에러 또는 버그라는 말을 들어봤을 텐데요.

프로그램에서 버그(Bug)는 잘못 작성된 프로그램의 문제를 나타냅니다. 버그는 컴파일 타임 버그, 런 타임 버그로 나눌 수가 있는데요. 소스 코드를 잘못 작성해서 나타나는 컴파일 타임 버그는 Visual Studio의 컴파일러가 알아서 잡아줍니다. 다만, 런 타임 버그는 프로그램을 실행할 때에만 발생하는 버그이기에 버그를 잡기가 매우 어렵습니다. Visual Studio는 훌륭한 디버깅 기능을 제공하는데, 이를 잘 사용하면 프로그램의 오류를 찾아내는데 시간을 단축할 수 있습니다. 이러한 과정을 디버깅(에러잡기)이라 합니다.

C#의 주요 디버깅 기능은 아래와 같습니다.

  • 중단점 설정/해제(F9): 중단점(break point)은 프로그램의 특정 지점까지만 실행시키고자 할 때 사용합니다. 즉, 중단점이 설정된 곳에서 프로그램 실행이 멈춥니다. 프로그램을 작성할 때, 뜻밖의 에러를 만나게 되면, 에러가 발생할만한 부분을 찾아서 중단점을 설정해 놓고 중단점 이전에 작성된 변수에 마우스 커서를 올려놓아 해당 변수에 값이 제대로 들어가 있는지 확인합니다.
  • 한 단계씩 코드 실행(F11) : 한 단계씩 코드 실행은 C#의 프로그램의 코드를 한 줄씩 실행하면서 프로그램의 상태를 확인할 수 있습니다.
  • 프로시저 단위 코드 실행(F10) : 프로시저 단위 코드 실행은 프로그램 소스 코드의 프로시저 단위별로 프로그램 실행의 단계를 이동시켜 가면서 프로그램을 처리합니다.

63.2. 디버거 사용하기

Visual Studio의 디버거 기능을 사용해 보기 위한 예제를 만들어 보겠습니다.

예제: 디버거 사용을 위한 기본 코드 작성

코드: DebugDemo.cs

using System;

class DebugDemo
{
    static void Main()
    {
        int number1 = 10;
        int number2 = 20;
        int number3 = 30;

        Console.WriteLine(number1);
        Console.WriteLine(number2);
        Console.WriteLine(number3);
    }
}
10
20
30

디버깅 환경은 디버그와 릴리스 환경을 선택할 수 있습니다. 먼저 디버거를 사용하기 전에 솔루션 구성을 확인해야 합니다.

이제 Visual Studio 상단 메뉴에서 다음 그림과 같이 Debug 메뉴를 Debug와 Any CPU가 기본값으로 선택되어 있는 지 확인합니다. 만약 다른 값으로 선택되어 있으면 Debug와 Any CPU로 변경합니다.

그림: 솔루션 구성을 Debug로 설정

솔루션 구성을 Debug로 설정

솔루션 구성을 Debug로 설정

63.3. 중단점 사용하기

중단점은 브레이크 포인트(Breakpoint)라고도 부르는데 디버거가 프로그램의 특정 지점에서 실행을 멈추도록 합니다. 프로그램 작성 후 에러가 발생하거나 정상 동작하지 않을 때 특정 지점에서 프로그램을 멈춘 후 프로그램의 상태를 살펴볼 수 있습니다.

중단점을 설정하려면 소스 코드에 커서를 두고 F9 키를 누르면 자동으로 중단점이 설정됩니다. 다시 F9 키를 누르면 중단점이 해제가 됩니다. 한번 사용해 볼까요?

  1. 소스 코드 편집 창의 Main 메서드의 여는 중괄호 {가 있는 줄에 커서를 둡니다.
  2. 이곳에 중단점을 설정하려면 <Visual Studio > 디버그 > 중단점 설정/해제>를 선택합니다.

그림: 중단점 설정

중단점 설정 중단점 설정

다음 그림처럼 프로그램 소스 코드의 왼쪽 여백을 클릭해도 중단점을 설정할 수 있습니다.

그림: 소스 코드 편집 창의 왼쪽 여백(회색 공간)을 클릭하여 중단점 삽입

중단점 삽입 중단점 삽입

중단점 설정이 완료되면 해당 줄 왼쪽 여백에 빨간색 원이 표시가 됩니다.

그림: 중단점 설정 완료

중단점 설정 완료 alt text

중단점에 마우스 커서를 두면 중단점 위치 정보를 볼 수 있습니다.

그림: 중단점 설정된 상태

중단점 설정된 상태 alt text

중단점이 설정된 상태에서 디버깅 시작을 하면 중단점이 설정된 줄에서 프로그램이 멈춥니다. F5 키를 눌러서 디버깅을 시작합니다. 중단점이 설정된 위치에서 프로그램 실행이 멈춥니다. 중단점의 모양은 노란색 화살표가 표시가 됩니다. 노란색 화살표는 현재 프로그램의 실행 위치를 표시합니다.

그림: 디버깅 시작 후 중단점에서 실행 멈춤

중단점에서 실행 멈춤 alt text

63.4. 한 단계씩 코드 실행

지금부터 소스 코드를 한 줄 한 줄 실행해보겠습니다. F11 키를 누르세요. 그러면 노란색 화살표가 한 줄 아래로 이동합니다. 한 단계씩 코드 실행은 줄 단위로 프로그램 코드를 실행합니다.

참고로, F10 키를 눌러서 프로시저 단위 실행을 해도 동일하게 실행됩니다.

그림: 한 단계씩 코드 실행

한 단계씩 코드 실행 alt text

한 단계씩 코드 실행을 진행하면 다음과 같이 노란색 화살표가 중단점 다음 줄로 이동합니다. 그리고 화면 아래쪽의 자동 창을 살펴보면 number1 변수가 생성되었다고 나옵니다. 아직 number1에는 소스 코드에서 지정한 10이 할당되지 않은 상태입니다.

그림: 자동, 지역, 조사식 창 사용하기

자동, 지역, 조사식 창 사용하기 alt text

다시 F11 키를 누르세요. 그러면 노란색 화살표가 다음 줄로 이동하고 자동 창에는 number1의 값이 10으로 바뀝니다. 이제 int number1 = 10;은 완전히 실행되었습니다. 디버깅 상태에서 변수에 할당된 값을 확인하려면 해당 변수에 마우스 커서를 올리면 작은 툴팁이 생기면서 변수의 값을 확인할 수 있습니다.

그림: 변수에 할당된 값 확인

변수에 할당된 값 확인 alt text

다시 F11을 눌러서 실행 위치를 다음 줄로 이동합니다. number1number2 변수는 값이 할당되어 마우스 커서를 올려서 툴팁에서 변수의 값을 확인하거나 자동 창에서 이전 줄과 현재 줄의 변수의 내용을 확인할 수 있습니다.

그림: 변수의 상태를 툴팁과 자동 창을 통해서 확인

변수의 상태를 툴팁과 자동 창을 통해서 확인 alt text

한 단계씩 코드 실행 후 Console.WriteLine() 메서드를 진행하면 명령 프롬프트 창에 진행되는 값들이 단계별로 실행이 됩니다. 그림에서는 12번 줄까지 실행했으므로 명령 프롬프트 창에는 10과 20이 출력된 상태입니다. 노란색 화살표는 현재 줄을 실행하기 위해서 대기 중인 상태이므로 명령 프롬프트에는 30은 아직 출력되지 않았습니다.

그림: 디버깅에 따른 명령 프롬프트의 변화

디버깅에 따른 명령 프롬프트의 변화 alt text

디버깅을 중지하려면 Shift+F5 키를 누릅니다.

그림: 디버깅 중지

디버깅 중지 alt text

중단점은 필요한 위치에 여러 개 설정할 수 있습니다.

그림: 중단점 여러 개 설정

중단점 여러 개 설정 alt text

여러 개의 중단점이 설정된 상태에서 한 단계씩 코드 실행이 아닌 다음 중단점으로 바로 이동하려면 F5 키를 다시 누르면 됩니다. 그러면 바로 다음 중단점까지 코드가 실행되고 노란색 화살표가 이동됩니다.

그림: 계속 버튼을 클릭하거나 F5 키를 눌러서 다음 중단점까지 실행

다음 중단점으로 이동 alt text

디버깅 중에 다시 특정 지점으로 이동해서 소스의 상태를 확인해야할 때가 있습니다. 이런 경우에는 노란색 화살표를 마우스로 끌어서 원하는 실행 위치로 이동시킬 수 있습니다.

그림: 노란색 화살표를 마우스로 끌어서 실행 위치 변경

노란색 화살표를 마우스로 끌어서 실행 위치 변경 alt text

노란색 화살표에 마우스 커서를 두면 툴팁에 관련 정보가 표시됩니다.

그림: 노란색 화살표로 위치 변경

노란색 화살표로 위치 변경 alt text

63.5. Visual Studio의 디버깅 도구 사용하기

Visual Studio에는 디버깅과 관련된 유용한 도구들을 많이 제공합니다. 이 중에서 자주 사용하는 몇가지 도구만 살펴보겠습니다.

자동 창에서는 이전에 사용한 변수의 내용과 현재 줄에 표시된 변수의 내용을 보여줍니다.

그림: 자동 창을 통해서 변수의 내용 확인

자동 창을 통해서 변수의 내용 확인 alt text

지역 창에서는 현재의 메서드(Main)에서 사용중인 변수의 내용을 보여줍니다.

그림: 지역 창을 통해서 현재 메서드에서 사용중인 변수의 내용 확인

지역 창을 통해서 현재 메서드에서 사용중인 변수의 내용 확인 alt text

조사식 1 창에서는 변수의 내용을 새로운 값으로 변경할 수 있습니다.

그림: 조사식 1에서 변수의 내용을 직접 변경하기

조사식에서 변수의 내용을 직접 변경하기 alt text

참고: 진단 도구

디버깅할 때 소스 코드 편집 창 오른쪽에 진단 도구가 나온다면 x 버튼을 클릭해서 진단 도구는 닫아도 됩니다.

그림: 진단 도구 닫기

진단 도구 닫기 alt text

지금까지 사용한 Visual Studio 디버거의 필수 단축키를 정리해보겠습니다.

  • 중단점 삽입/삭제: F9
  • 디버깅 시작: F5
  • 디버깅 중지: Shift+F5
  • 한 단계씩 코드 실행: F11
  • 프로시저 단위 실행: F10

이상으로 Visual Studio에서 제공하는 디버거의 기본적인 기능을 살펴보았습니다. 디버거는 훨씬 더 많은 기능과 메뉴들을 제공하고 있습니다. 앞으로 진행되는 많은 예제에서도 디버거를 적극 사용해서 코드 분석과 버그를 찾는 연습을 꾸준히 하는 것이 좋습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com