이 빠른 시작에서는 Visual Studio 디버거를 사용하여 네이티브 C++ 코드를 디버그하는 방법을 알아봅니다. 이 문서에서는 디버거에서 작업하기 위한 몇 가지 기본 기능을 빠르게 알아볼 수 있는 방법을 제공합니다.
Visual Studio 없는 경우 Visual Studio 다운로드 페이지에서 free 평가판 버전을 설치할 수 있습니다.
새 프로젝트 만들기
먼저 새 프로젝트를 만들어 디버거에서 확인할 코드를 준비합니다.
Visual Studio를 열고 새 프로젝트를 만듭니다.
시작 창이 열려 있지 않으면 파일>시작 창을 선택합니다.
시작 창에서 새 프로젝트 만들기를 선택합니다.
새 프로젝트 만들기 창에서 필터를 설정하고 프로젝트 템플릿을 검색합니다.
서식 파일 검색 상자에 빈 항목으로 입력합니다.
언어 드롭다운을 확장하고 C++를 선택합니다.
결과 목록에서 C++에 대한 mpty Project 템플릿을 선택한 다음, Next 선택합니다.
C++용 빈 프로젝트 템플릿이 표시되지 않으면 코드 없이 계속 옵션을 선택하세요.
Tools>Get Tools and Features...를 선택하면 Visual Studio 설치 관리자가 열립니다.
설치 관리자 창에서 C++ 워크로드를 사용하여 데스크톱 개발 확인란을 선택한 다음 수정을 선택합니다.
선택한 C++ 워크로드를 포함하도록 Visual Studio 설치 업데이트
업데이트가 완료되면 파일>시작 창을 선택하고 이전 지침에 따라 필요한 템플릿을 선택합니다.
새 프로젝트를 구성합니다.
Project 이름 및 솔루션 이름을 입력하거나 기본값을 사용합니다.
기본 위치를 사용하거나 찾아보기(...)를 선택하여 다른 폴더에 프로젝트를 만듭니다.
Create를 선택합니다.
Visual Studio 새 프로젝트를 만들고 지정된 폴더에 프로젝트 파일을 추가합니다.
프로젝트 파일 추가
디버거에서 테스트할 콘텐츠가 있도록 코드 파일을 추가합니다.
솔루션 탐색기 창에서 <project-name>을 마우스 오른쪽 단추로 클릭하고 Add>새 항목을 선택합니다.
솔루션 탐색기 창이 표시되지 않으면 View>솔루션 탐색기을 선택합니다.
새 항목 추가 대화 상자에서 파일 이름 MyDbgApp.cpp 입력한 다음 추가를 선택합니다.
파일이 코드 편집기에서 열립니다.
새 파일에 다음 코드를 추가합니다.
#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(); }Ctrl+S 바로 가기 키를 사용하여 파일 변경 내용을 저장합니다.
중단점 설정
breakpoint는 Visual Studio 실행 중인 코드를 일시 중단해야 하는 위치를 나타내는 표식입니다. 중단점이 설정되면 변수의 현재 값을 살펴보고, 메모리 동작을 검사하고, 코드의 특정 분기가 실행 중인지 확인할 수 있습니다. 중단점은 디버깅에서 가장 기본적인 기능입니다.
중단점을 설정하려면 코드에서 함수에 대한
doWork()호출을 찾은 다음 동일한 줄의 왼쪽 여백에서 선택합니다.중단점이 설정되면 코드의 해당 줄에 있는 왼쪽 여백에 빨간색 점이 표시됩니다.
F5 키보드 단축키를 사용하여 디버깅을 시작하거나 디버그>디버깅 시작을 선택합니다.
함수를 호출하기 직전에 코드 실행이 일시 중지됩니다
doWork().디버거가 당신이 설정한 브레이크포인트에서 멈춥니다. 노란색 화살표는 디버거가 앱 실행을 일시 중지하는 문을 식별합니다.
팁 (조언)
C++ 코드에서 메모리 관련 오류를 디버깅하는 경우 중단점을 사용하여 주소 값(찾기
NULL) 및 참조 횟수를 검사할 수도 있습니다.
조건부 중단점 설정
루프 또는 재귀에서 중단점을 설정하거나 자주 단계별로 진행하는 중단점이 많은 경우 조건부 중단점을 사용합니다.
이 방법은 특정 조건이 충족되는 경우에만 코드가 일시 중단되도록 하는 데 도움이 됩니다. 조건부 중단점은 시간을 절약하고 재현하기 어려운 문제를 쉽게 디버그할 수 있습니다.
코드 연습
Visual Studio 앱 실행을 계속하도록 디버거에 지시하는 여러 가지 방법을 제공합니다. 다음 예제에서는 코드를 탐색하는 데 유용한 명령을 보여 줍니다.
코드가 중단점에서 일시 중지된 상태에서 구문 c1.push_back(20) 위에 마우스를 올려 녹색 클릭 위치까지 실행(여기까지 실행)
아이콘이 표시될 때까지 기다립니다. 아이콘을 선택합니다.
코드가 중단점에서 일시 중지된 상태에서 구문 c1.AddLast(20) 위에 마우스를 올려 녹색 클릭 위치까지 실행(여기까지 실행)
아이콘이 표시될 때까지 기다립니다. 아이콘을 선택합니다.
앱은 실행을 계속하면서 doWork를 호출하고, Run to click을 클릭한 코드 줄에서 실행을 일시 중지합니다.
코드를 단계별로 진행하는 데 사용되는 일반적인 키보드 명령에는 F10 및 F11이 포함됩니다. 자세한 지침은 Visual Studio 디버거의 오버뷰 참조하세요.
데이터 팁에서 변수 검사
데이터 팁 기능을 사용하여 변수의 상태를 검사할 수 있습니다.
현재 코드 줄(노란색 실행 포인터로 표시됨)에서
c1개체 위에 마우스 포인터를 올리면 데이터 팁이 표시됩니다.
데이터 팁은 변수의
c1현재 값을 표시하고 해당 속성을 검사할 수 있도록 합니다.디버깅할 때 변수에 대한 예기치 않은 값이 표시되면 버그가 있을 수 있습니다. 버그는 변수를 호출하는 코드 또는 이전 줄에 있을 수 있습니다.
데이터 팁을 확장하여
c1개체의 현재 속성 값을 확인하세요.코드가 실행되는 동안
c1의 값을 계속 확인하려면 데이터 팁에서 핀
아이콘을 선택합니다.핀 동작은 데이터 팁을 열린 상태로 유지합니다. 코드가 실행되면 고정된 팁의 값이 변경되어 감시된 개체의 현재 상태를 표시합니다.
고정된 팁을 IDE 내의 원하는 위치로 이동할 수 있으므로, 디버깅하는 동안 다른 항목을 확인하는 데 방해가 되지 않습니다.
디버깅 중 핫 리로드 활성화
디버깅하는 동안 코드에서 테스트하려는 변경 내용이 표시되면 핫 다시 로드 기능(이전에는 Edit and Continue)을 사용할 수 있습니다.
두 번째
c2.front()문을 선택하고 코드를c2.back()로 변경합니다.F10을 몇 번(또는 디버그>단계를 몇 번 선택)하여 디버거를 진행하고 편집된 코드를 실행합니다.
F10은 디버거가 코드를 한 문장씩 실행하도록 하지만, 함수를 직접 들어가는 대신 건너뜁니다 (건너뛰는 코드도 계속 실행됨).
기능 및 제한 사항에 대한 자세한 내용은