빠른 시작: Visual Studio 디버거를 사용하여 C++ 디버그

Visual Studio 디버거는 앱을 디버그하도록 돕는 여러 가지 강력한 기능을 제공합니다. 이 항목에는 기본 기능 중 일부에 대해 알아보는 빠른 방법을 제공합니다.

새 프로젝트 만들기

  1. Visual Studio를 열고 프로젝트를 만듭니다.

    Esc 키를 눌러 시작 창을 닫습니다. Ctrl + Q를 입력하여 검색 상자를 열고 c++를 입력하고 템플릿을 선택한 다음, 새 콘솔 앱 프로젝트 만들기를 선택합니다. 표시되는 대화 상자에서 만들기를 선택합니다.

    Windows 콘솔 애플리케이션 프로젝트 템플릿이 표시되지 않는 경우 도구>도구 및 기능 가져오기...로 이동하면 Visual Studio 설치 관리자가 열립니다. Visual Studio 설치 관리자가 시작됩니다. C++를 사용한 데스크톱 개발 워크로드를 선택한 다음, 수정 단추를 선택합니다.

    Visual Studio가 솔루션을 만듭니다.

  2. MyDbgApp.cpp에서 다음 코드를

    int main()
    {
        return 0;
    }
    

    이 코드로 바꿉니다(#include "stdafx.h" 제거 안 함).

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

중단점 설정

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

  1. 중단점을 설정하려면 doWork 함수 호출의 왼쪽 여백을 클릭합니다(또는 코드 줄을 선택하고 F9 키를 누릅니다).

    Set a breakpoint

  2. 이제 F5 키를 누릅니다(또는 디버그 > 디버깅 시작 선택).

    Hit a breakpoint

    디버거가 중단점을 설정한 위치에서 일시 중지됩니다. 디버거 및 앱 실행이 일시 중지된 명령문은 노란색 화살표로 표시됩니다. doWork 함수 호출이 있는 줄이 아직 실행되지 않았습니다.

    루프 또는 재귀에 중단점이 있는 경우 또는 자주 한 단계씩 실행하는 많은 중단점이 있는 경우 조건부 중단점을 사용하여 특정 조건이 충족되는 경우에만 코드가 일시 중단되도록 합니다. 조건부 중단점은 시간을 절약하고 재현하기 어려운 문제를 쉽게 디버그할 수 있도록 할 수 있습니다.

    C++에서 메모리 관련 오류를 디버그하려고 시도할 때 중단점을 사용하여 주소 값(NULL 검색)을 검사하고 개수를 참조할 수도 있습니다.

디버거를 계속하도록 지시하는 다양한 명령이 있습니다. Visual Studio 2017부터 사용할 수 있는 유용한 코드 탐색 명령을 보여줍니다.

중단점에서 일시 중지하는 동안 녹색의 실행하려면 클릭 단추 Run to Click가 나타날 때까지 c1.push_back(20) 명령문을 마우스로 가리킨 다음, 실행하려면 클릭 단추를 누릅니다.

Run to click

앱은 실행, doWork 호출을 계속하고, 단추를 클릭한 코드 줄에서 일시 중지합니다.

코드를 단계별로 실행하는 데 사용되는 일반적인 키보드 명령은 F10F11을 포함합니다. 자세한 지침은 디버거 소개를 참조하세요.

datatip에서 변수 검사

  1. 현재 코드 줄에서(노란색 실행 포인터에 의해 표시됨) 마우스로 c1 개체를 마우스로 가리켜 datatip을 표시합니다.

    View a datatip

    datatip은 c1 변수의 현재 값을 보여주고 이를 통해 해당 속성을 검사할 수 있습니다. 디버깅할 때 예상하지 않은 값이 표시되는 경우 이전 또는 호출하는 코드 줄에 버그가 있을 가능성이 큽니다.

  2. datatip을 확장하여 c1 개체의 현재 속성 값을 확인합니다.

  3. 코드를 실행하는 동안 c1의 값을 계속해서 볼 수 있도록 datatip을 고정하려면 작은 고정 아이콘을 클릭합니다. (고정된 datatip을 편리한 위치로 이동할 수 있습니다.)

코드를 편집하며 디버그 계속하기

디버깅 세션 중 코드에서 테스트하려는 변경을 식별하는 경우 해당 작업도 수행할 수 있습니다.

  1. c2.front()의 두 번째 인스턴스를 클릭하고 c2.front()c2.back()로 변경합니다.

  2. F10(또는 디버그 > 프로시저 단위 실행)을 몇 번 눌러 디버거를 진행하고 편집된 코드를 실행합니다.

    Edit and continue

    F10은 디버거를 한 번에 하나의 명령문씩 진행하지만 단계별로 실행하는 대신 함수를 실행합니다(건너뛰는 코드가 여전히 실행됨).

편집하며 계속하기 사용 및 기능 제한에 대한 자세한 내용은 편집하며 계속하기를 참조하세요.

다음 단계

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