다음을 통해 공유


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

Visual Studio 디버거는 애플리케이션을 디버깅하는 데 도움이 되는 강력한 기능을 많이 제공합니다. 이 주제는 기본 기능을 빠르게 배울 수 있는 방법을 제공합니다.

새 프로젝트 만들기

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

    시작 창이 아직 열려 있지 않으면 파일 > 시작 창을 선택합니다. 시작 창에서 새 프로젝트 만들기선택합니다. 검색 상자에 "빈 프로젝트"를 입력한 다음 C++ 빈 프로젝트 템플릿을 선택합니다.

    프로젝트 템플릿이 보이지 않으면 Visual Studio Installer를 여세요. C++ 워크로드를 사용하여 데스크톱 개발을 선택한 다음 수정을 선택합니다.

    Visual Studio에서 프로젝트를 만듭니다.

    새 소스 파일 만들기 MyDbgApp.cpp

  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();
    }
    

중단점 설정

breakpoint은 Visual Studio가 실행 중인 코드를 일시 정지해야 하는 위치를 표시하는 마커로서, 변수의 값이나 메모리의 동작, 또는 코드의 분기가 실행되는지 여부를 확인할 수 있도록 합니다. 디버깅에서 가장 기본적인 기능입니다.

  1. 중단점을 설정하려면 doWork 함수 호출 왼쪽의 구터를 클릭하거나 코드를 선택하고 F9를 누르세요.

    중단점을 설정

  2. 이제 F5 키를 누르거나 디버그 > 시작 디버깅을 선택합니다.

    중단점을 만남

    디버거가 당신이 설정한 브레이크포인트에서 멈춥니다. 디버거와 앱 실행이 일시 중지된 위치는 노란색 화살표로 표시됩니다. 함수 호출이 있는 줄이 doWork 아직 실행되지 않았습니다.

    팁 (조언)

    루프 또는 재귀에 중단점이 있는 경우나 자주 단계별로 실행하는 여러 개의 중단점이 있는 경우, 특정 조건이 충족될 때만 코드가 일시 중지되는지 확인하기 위해 조건부 중단점을 사용하십시오. 조건부 브레이크포인트는 시간을 절약할 수 있을 뿐만 아니라, 재현하기 어려운 문제를 디버깅하기도 더 쉽게 해줍니다.

    C++에서 메모리 관련 오류를 디버깅할 때 주소 값(NULL을 찾아보세요)과 참조 횟수를 검사하기 위해 중단점을 사용할 수도 있습니다.

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

중단점에서 일시 중지된 상태에서, 문구 c1.push_back(20) 위에 마우스를 올려 녹색 Run to click 버튼 Run to Click이 나타날 때까지 기다렸다가, Run to click 버튼을 누릅니다.

클릭하여 실행

앱은 실행을 계속하고 doWork을 호출하며, 버튼을 클릭한 코드 줄에서 멈춥니다.

코드를 단계별로 진행하는 데 사용되는 일반적인 키보드 명령에는 F10F11이 포함됩니다. 더 심층적인 지침은 디버거 첫 번째 보기를 참조하세요.

데이터팁에서 변수를 검사하기

  1. 현재 코드 줄(노란색 실행 포인터로 표시됨)에서 마우스를 사용하여 c1 객체 위로 이동하면 데이터 팁이 표시됩니다.

    데이터 팁 보기

    datatip은 c1 변수의 현재 값을 보여주고 그 속성을 검사할 수 있게 해줍니다. 디버깅할 때 예상하지 못한 값을 발견하면, 아마도 이전 코드 줄이나 호출 라인에 버그가 있는 것입니다.

  2. c1 객체의 현재 속성 값을 확인하기 위해 데이터 팁을 확장하십시오.

  3. 코드 실행 중에 c1의 값을 계속 볼 수 있도록 데이터팁을 고정하고 싶다면, 작은 핀 아이콘을 클릭하십시오. 고정된 정보 팁을 편리한 위치로 옮길 수 있습니다.

코드 수정 및 디버깅 계속하기

디버깅 세션 중에 코드에서 테스트하고 싶은 변경 사항을 발견하면, 그것도 가능합니다.

  1. 두 번째 c2.front()를 클릭하고 c2.front()c2.back()로 변경하세요.

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

    편집 및 계속

    F10은 디버거가 코드를 한 문장씩 실행하도록 하지만, 함수를 직접 들어가는 대신 건너뜁니다 (건너뛰는 코드도 계속 실행됨).

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

다음 단계

이 튜토리얼에서는 디버거를 시작하고 코드를 한 단계씩 실행하며 변수를 검사하는 방법을 배웠습니다. 자세한 정보에 대한 링크와 함께 디버거 기능을 개략적으로 살펴볼 수 있습니다.

먼저 디버거 살펴보기