다음을 통해 공유


먼저 Visual Studio 디버거 살펴보기

이 항목에서는 Visual Studio에서 제공하는 디버거 도구를 소개합니다. Visual Studio 컨텍스트에서 애플리케이션을 디버그할 때 , 디버거가 연결된 상태로 애플리케이션(즉, 디버거 모드로)실행하는 것을 의미합니다. 이 작업을 수행할 때 디버거는 코드가 실행되는 동안 수행하는 작업을 확인하는 여러 가지 방법을 제공합니다. 코드를 단계별로 실행하고 변수에 저장된 값을 살펴보고, 변수에 대한 감시를 설정하여 값이 변경되는 시기를 확인하고, 코드의 실행 경로를 검사할 수 있습니다. 코드를 처음 디버그하려고 하면 이 항목을 살펴보기 전에 절대 초보자를 위한 디버깅을 읽어보는 것이 좋습니다. 특정 작업을 수행하려고 하고 사용할 기능을 알아야 하는 경우 디버거 기능 찾기참조하세요. AI 지원 디버깅을 시도하려면 copilot 사용하여디버그를 참조하세요.

여기에 설명된 기능은 C#, C++, Visual Basic, JavaScript 및 Visual Studio에서 지원하는 기타 언어(명시된 경우 제외)에 적용됩니다.

중단점 설정 및 디버거 시작

중단점은 런타임에 자세히 검사하려는 코드 줄 또는 코드 섹션을 알고 있는 경우에 유용한 기능입니다. 조건부 중단점 및 함수 중단점과 같은 다양한 유형의 중단점에 대한 자세한 내용은 중단점 사용 참조하세요.

디버그하려면 앱 프로세스에 연결된 디버거를 사용하여 앱을 시작해야 합니다. 이렇게 하려면 다음을 수행합니다.

  • 가장 일반적인 방법인 F5(디버그 > 디버깅 시작)를 누릅니다.

그러나 지금은 앱 코드를 검사하기 위해 중단점을 설정하지 않았을 수 있으므로 먼저 이 작업을 수행하고 디버깅을 시작합니다. 중단점은 신뢰할 수 있는 디버깅의 가장 기본적이고 필수적인 기능입니다. 중단점은 변수 값이나 메모리 동작을 살펴볼 수 있도록 Visual Studio에서 실행 중인 코드를 일시 중단해야 하는 위치 또는 코드 분기가 실행되고 있는지 여부를 나타냅니다.

코드 편집기에서 파일이 열려 있는 경우 코드 줄 왼쪽의 여백을 클릭하여 중단점을 설정할 수 있습니다.

중단점을 설정

중단점을 설정

F5(디버그 > 디버깅 시작) 또는 디버그 도구 모음의 디버깅 시작 버튼 디버깅 시작을(를) 누르면, 디버거는 만나는 첫 번째 중단점까지 실행됩니다. 앱이 아직 실행되지 않는 경우 F5는 디버거를 시작하고 첫 번째 중단점에서 중지합니다.

대부분의 명령에 대한 바로 가기 키는 앱 코드를 더 빠르게 탐색할 수 있도록 하기 때문입니다. (메뉴 명령과 같은 해당 명령은 괄호로 표시됩니다.) 단계 명령 사용에 대한 자세한 내용은 디버거 탐색 코드를 참조하세요.

디버거가 연결된 상태에서 앱을 시작하려면 F11(디버그 > 한 단계씩)를 누릅니다. F11은 단계 진입 명령으로, 앱 실행을 한 번에 하나의 문(statement)씩 단계별로 진행합니다. F11로 앱을 시작하면 디버거가 실행되는 첫 번째 문을 중단합니다.

F11 한 단계씩 들어가다

F11 한 단계씩 들어가다

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

F11은 실행 흐름을 가장 자세하게 검사하는 좋은 방법입니다. (코드를 통해 더 빠르게 이동하기 위해 몇 가지 다른 옵션도 보여 줍니다.) 기본적으로 디버거는 사용자 코드가 아닌 코드를 건너뜁니다(자세한 내용은 내 코드참조).

메모

관리 코드에는 속성 및 연산자를 자동으로 단계별로 실행할 때 알림을 받을 것인지 묻는 대화 상자가 표시됩니다(기본 동작). 나중에 설정을 변경하려면 디버깅아래의 도구 > 옵션 메뉴에서 속성 및 연산자 설정을 실행하지 않도록 설정합니다.

코드를 단계별로 실행하여 함수 건너뛰기

함수 또는 메서드 호출인 코드 줄에 있는 경우 F11 대신 F10 (디버그 >단계별 실행)을 누를 수 있습니다.

F10은 앱 코드에서 함수 또는 메서드를 한 단계씩 실행하지 않고 디버거를 진행합니다(코드는 계속 실행됨). F10 키를 누르면 관심 없는 코드를 건너뛸 수 있습니다. 이렇게 하면 더 관심 있는 코드를 빠르게 얻을 수 있습니다. 단계 명령 사용에 대한 자세한 내용은 디버거 탐색 코드를 참조하세요.

마우스를 사용하여 코드의 한 지점까지 빠르게 실행

실행하여 클릭 단추를 사용하는 것은 임시 중단점을 설정하는 것과 비슷합니다. 이 명령은 앱 코드의 표시되는 영역 내에서 빠르게 탐색하는 데에도 편리합니다. 열려 있는 파일에서 실행을 사용하여 클릭할 수 있습니다. 이 기능 및 유사한 탐색 기능에 대한 자세한 내용은 코드 특정 위치로실행을 참조하세요.

디버거에 있는 동안 코드 줄 위에 마우스를 가져가면 "클릭하여 실행" (여기까지 실행) 단추가 실행 단추 스크린샷 왼쪽에 나타납니다. 단추는 실행이 단추가 배치된 줄까지 진행됨을 나타냅니다.Visual Studio 디버거의

함수 호출의 왼쪽에 나타나는 클릭까지 실행 단추를 보여 주는 Visual Studio 디버거 스크린샷

함수 호출의 왼쪽에 나타나는 클릭까지 실행 단추를 보여 주는 Visual Studio 디버거 스크린샷

메모

실행하여 클릭(여기까지 실행) 단추는 Visual Studio 2017부터 사용할 수 있습니다.

실행을 클릭하여(여기까지 실행) 단추를 클릭합니다. 디버거는 클릭한 코드 줄로 이동합니다.

현재 함수에서 디버거를 진행합니다.

경우에 따라 디버깅 세션을 계속 진행하지만 현재 함수를 통해 디버거를 계속 진행하려고 할 수 있습니다.

Shift + F11(또는 디버그 > 스텝 아웃)를 누릅니다.

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

커서 위치까지 실행

코드를 편집할 때(디버거에서 일시 중지되지 않고) 앱에서 코드 줄을 마우스 오른쪽 단추로 클릭하고 커서 실행(또는 Ctrl + 누름)을 선택합니다. 이 명령은 디버깅을 시작하고 현재 코드 줄에 임시 중단점을 설정합니다. 이 기능 및 유사한 탐색 기능에 대한 자세한 내용은 코드 특정 위치로실행을 참조하세요.

커서까지 실행

커서까지 실행

중단점을 설정한 경우 디버거는 첫 번째 중단점에서 일시 중지됩니다.

커서로 실행 선택한 코드 줄에 도달할 때까지 F5 누릅니다.

이 명령은 코드를 편집할 때 임시 중단점을 빠르게 설정하고 동시에 디버거를 시작하려는 경우에 유용합니다.

메모

디버깅하는 동안 호출 스택 창에서 커서로 실행을 사용할 수 있습니다.

앱을 빠르게 다시 시작합니다.

디버그 도구 모음에서 다시 시작앱 다시 시작 다시 시작 단추를 클릭하거나 ctrl + Shift + F5 누릅니다.

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

디버거를 중지하고 코드 편집기로 돌아가려면 다시 시작 대신 빨간색 중지 디버깅 중지 단추를수 있습니다.

라이브 코드 편집

Visual Studio 2022는 디버깅하는 동안 라이브 코드 편집을 지원합니다. 자세한 내용은 다음을 참조하세요.

코드를 편집하고 디버깅을 계속합니다(C#, VB, C++, XAML)

Visual Studio에서 지원하는 대부분의 언어에서는 디버깅 세션 중간에 코드를 편집하고 디버깅을 계속할 수 있습니다. 이 기능을 사용하려면 디버거에서 일시 중지된 상태에서 커서를 사용하여 코드를 클릭하고 편집한 다음 F5, F10또는 F11 눌러 디버깅을 계속합니다. 이 기능 사용 및 기능 제한 사항에 대한 자세한 내용은 편집하며 계속하기참조하세요.

편집을 하고 계속 디버깅하기

디버깅 세션 중에 XAML 코드를 수정하려면 XAML 핫 다시 로드를 사용하여 XAML 코드를 작성하고 디버깅하는 방법을 참조하시기 바랍니다. 자세한 정보는 을 참조하세요.

데이터 팁을 사용하여 변수 검사

이제 어느 정도 익숙해졌으므로, 디버거를 사용하여 앱 상태(변수)를 검사할 좋은 기회가 있습니다. 변수를 검사할 수 있는 기능은 디버거의 가장 유용한 기능 중 일부이며 다양한 방법으로 수행할 수 있습니다. 종종 문제를 디버그하려고 할 때 변수가 특정 앱 상태에 있을 것으로 예상되는 값을 저장하는지 여부를 확인하려고 합니다. 데이터 팁 사용에 대한 자세한 내용은 데이터 팁데이터 값 보기를 참조하세요.

디버거에서 일시 중지된 상태에서 마우스로 개체를 마우스로 가리키면 해당 값 또는 기본 속성 값이 표시됩니다.

데이터 팁 보기

데이터 팁 보기

변수에 속성이 있는 경우 개체를 확장하여 모든 속성을 볼 수 있습니다.

디버깅할 때 개체에 대한 속성 값을 빠르게 확인하는 방법을 원하는 경우가 많으며 데이터 팁은 이를 수행하는 좋은 방법입니다.

자동 및 지역 창으로 변수 검사

자동 창에 현재 값 및 해당 형식과 함께 변수가 표시됩니다. 자동 창에는 현재 줄 또는 이전 줄에 사용된 모든 변수가 표시됩니다(C++에서 창에는 앞의 세 코드 줄에 있는 변수가 표시됩니다. 언어별 동작에 대한 설명서를 확인합니다). 이러한 창을 사용하는 방법에 대한 자세한 내용은 자동 및 지역 창변수 검사를 참조하세요.

디버깅하는 동안 코드 편집기 아래쪽의 자동 창을 확인합니다.

자동 창

자동 창

메모

JavaScript에서는 로컬 창이 지원되지만 자동 창은 지원되지 않습니다.

다음으로 Locals 창을 살펴봅니다. 지역 창에는 현재 범위에 있는 변수가 표시됩니다.

로컬 창

로컬 창

이 예제에서는 this 개체와 f 개체가 범위에 있습니다. 자세한 내용은 자동 및 로컬 창에서 변수 검사을 참조하세요.

메서드 호출의 반환 값 보기

.NET 및 C++ 코드에서는 메서드 호출을 단계별로 실행하거나 종료할 때 자동 창에서 반환 값을 검사할 수 있습니다. 이는 반환 값이 지역 변수에 저장되지 않은 경우에 유용할 수 있습니다. 자세한 내용은 메서드 호출의 반환 값 보기를 참조하세요.

Visual Studio 2022 버전 17.12 미리 보기 3부터 자동 창뿐만 아니라 인라인으로 메서드 호출의 반환 값을 볼 수도 있습니다.

메서드 호출의 반환 값을 보여 주는 스크린샷

Copilot를 사용하도록 설정하면 반환 값에 대한 데이터 팁에 표시되는 코필로트 요청 단추를 사용하여 인라인 반환 값과 관련된 대상 지원을 받을 수도 있습니다.

코필로트 아이콘을 사용하여 메서드 호출의 반환 값을 보여 주는 스크린샷

시계 설정

감시 창을 사용하여 감시하고자 하는 변수(또는 식)를 지정할 수 있습니다. 자세한 내용은 Watch 및 QuickWatch Windows사용하여 조사식 설정을 참조하세요.

디버깅하는 동안 개체를 마우스 오른쪽 단추로 클릭하고 조사식 추가 선택합니다.

조사식 창

조사식 창

이 예제에서는 개체에 시계 집합이 있으며 디버거를 통해 이동할 때 해당 값이 변경되는 것을 볼 수 있습니다. 다른 변수 창과 달리 조사식 창에는 항상 보고 있는 변수가 표시됩니다(범위를 벗어나면 회색으로 표시됨).

호출 스택 검사

호출 스택 창에는 메서드 및 함수가 호출되는 순서가 표시됩니다. 위쪽 줄에는 현재 함수가 표시됩니다. 두 번째 줄에는 호출된 함수 또는 속성 등이 표시됩니다. 호출 스택은 앱의 실행 흐름을 검사하고 이해하는 좋은 방법입니다. 자세한 내용은 호출 스택을 검사하는 방법을 참조하십시오.

메모

호출 스택 창은 Eclipse와 같은 일부 IDE의 디버그 큐브 뷰와 비슷합니다.

디버깅하는 동안 호출 스택 창을 클릭합니다. 이 창은 기본적으로 오른쪽 아래 창에서 열립니다.

호출 스택 검사

호출 스택 검사

코드 줄을 두 번 클릭하여 해당 소스 코드를 살펴보고 디버거에서 검사하는 현재 범위도 변경할 수 있습니다. 디버거를 진행하지 않습니다.

호출 스택 창에서 마우스 오른쪽 단추 클릭 메뉴를 사용하여 다른 작업을 수행할 수도 있습니다. 예를 들어 특정 함수에 중단점을 삽입하고, 커서로 실행사용하여 앱을 다시 시작하고, 소스 코드를 검사할 수 있습니다.

예외 검사하기

앱에서 예외가 발생하면, 디버거가 예외가 발생한 코드 줄로 이동합니다. 자세한 내용은 예외 도우미 사용하여 예외 검사참조하세요.

예외 도우미

이 예제에서 예외 도우미 개체 참조가 개체의 인스턴스로 설정되지 않았다는 오류 메시지와 System.NullReferenceException 예외를 보여 줍니다. 또한 Trim 메서드를 호출하려고 할 때 문자열 값이 null임을 알려줍니다.

예외 도우미

이 예제에서 예외 도우미System.Argument 예외와 경로가 올바른 형식이 아님을 나타내는 오류 메시지를 보여 주었습니다. 따라서 메서드 또는 함수 인수에서 오류가 발생한 것을 알 수 있습니다.

이 예제에서 DirectoryInfo 호출은 value 변수에 저장된 빈 문자열에 대한 오류를 표시했습니다.

예외 도우미는 오류를 디버그하는 데 도움이 되는 훌륭한 기능입니다. 오류 세부 정보 보기와 같은 작업을 수행하고 예외 도우미에서 감시를 추가할 수도 있습니다. 또는 필요한 경우 특정 예외를 throw하기 위한 조건을 변경할 수 있습니다. 코드에서 예외를 처리하는 방법에 대한 자세한 내용은 디버깅 기술 및 도구를 참조하세요.

예외 설정 노드를 확장하여 이 예외 유형을 처리하는 방법에 대한 추가 옵션을 확인하지만 이 둘러보기에서는 아무것도 변경할 필요가 없습니다.

copilot있는 경우 예외를 디버깅하는 동안 AI 지원을 받을 수 있습니다. 부조종사에게 물어보기 단추의 스크린샷을 찾아보세요. 단추입니다. Copilot 디버그에 대한 자세한 내용은 참조하세요.

AI 지원 받기

만약 Copilot가 있다면, 디버깅하는 동안 AI 지원을 받을 수 있습니다. Copilot 디버그에 대한 자세한 내용은 참조하세요. 디버깅하는 동안 Copilot 요청 단추의스크린샷을 찾을 수도 있습니다. 단추입니다. 이러한 시나리오에서 Copilot는 질문의 컨텍스트를 이미 알고 있으므로 코필로트 채팅에서 컨텍스트를 직접 제공할 필요가 없습니다.

디버깅 구성

디버그 또는 릴리스 구성빌드하도록 프로젝트를 구성하거나, 디버깅을 위한 프로젝트 속성을 구성하거나, 디버깅을 위한 일반 설정 구성할 수 있습니다. 또한 DebuggerDisplay 특성 또는 C/C++의 경우 NatVis 프레임워크같은 기능을 사용하여 사용자 지정 정보를 표시하도록 디버거를 구성할 수 있습니다.

디버깅 속성은 각 프로젝트 유형에 따라 다릅니다. 예를 들어 시작할 때 애플리케이션에 전달할 인수를 지정할 수 있습니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성선택하여 프로젝트별 속성에 액세스할 수 있습니다. 디버깅 속성은 일반적으로 특정 프로젝트 유형에 따라 빌드 또는 디버그 탭에 표시됩니다.

Visual Studio 2022부터 .NET 프로젝트의 디버그 탭은 디버그 관련 속성을 설정할 수 있는 디버그 시작 프로필 UI에 대한 링크를 제공합니다.

프로젝트 속성프로젝트 속성Project propertiesProject properties

프로젝트 속성프로젝트 속성Project propertiesProject properties

Azure App Service에서 라이브 ASP.NET 앱 디버그

Azure App Service에서 디버깅하려면 Azure 앱 디버그을 참고하십시오.

Visual Studio Enterprise(전용)의 경우 스냅샷 디버거 관심 있는 코드가 실행될 때 프로덕션 내 앱의 스냅샷을 만듭니다. 디버거에 스냅샷을 만들도록 지시하려면 코드에서 스냅포인트 및 로그포인트를 설정합니다. 디버거를 사용하면 프로덕션 애플리케이션의 트래픽에 영향을 주지 않고 무엇이 잘못되었는지 정확하게 확인할 수 있습니다. 스냅샷 디버거를 사용하면 프로덕션 환경에서 발생하는 문제를 해결하는 데 걸리는 시간을 크게 줄일 수 있습니다.

스냅샷 디버거를 시작 스냅샷 디버거를 시작 시작

스냅샷 컬렉션은 Azure App Service에서 실행되는 ASP.NET 애플리케이션에 사용할 수 있습니다. ASP.NET 애플리케이션은 .NET Framework 4.6.1 이상에서 실행되고 ASP.NET Core 애플리케이션은 Windows의 .NET Core 2.0 이상에서 실행되어야 합니다.

자세한 내용은 스냅샷 디버거 사용하여 라이브 ASP.NET 앱 디버그참조하세요.

IntelliTrace 스텝백을 사용하여 스냅샷 보기(Visual Studio Enterprise)

IntelliTrace 스텝백 모든 중단점 및 디버거 단계 이벤트에서 애플리케이션의 스냅샷을 자동으로 만듭니다. 기록된 스냅샷을 사용하면 이전 중단점 또는 단계로 돌아가서 이전과 같이 애플리케이션의 상태를 볼 수 있습니다. IntelliTrace 스텝백은 이전 애플리케이션 상태를 확인하지만 디버깅을 다시 시작하거나 원하는 앱 상태를 다시 만들지 않으려는 경우 시간을 절약할 수 있습니다.

디버그 도구 모음에서 뒤로앞으로 단추를 사용하여 스냅샷을 탐색하고 볼 수 있습니다. 이러한 단추는 진단 도구 창의 이벤트 탭에 표시되는 이벤트를 탐색합니다.

이전 및 다음 단계 버튼

자세한 내용은 IntelliTrace를 사용하여 이전 앱 상태를 검사하는 페이지를 참조하세요.

성능 문제 디버깅하다

앱이 너무 느리게 실행되거나 너무 많은 메모리를 사용하는 경우 초기에 프로파일링 도구를 사용하여 앱을 테스트해야 할 수 있습니다. CPU 사용량 도구 및 메모리 분석기와 같은 프로파일링 도구에 대한 자세한 내용은 먼저 프로파일링 도구살펴보세요.

이 자습서에서는 여러 디버거 기능을 빠르게 살펴보았습니다. 중단점과 같은 이러한 기능 중 하나를 좀 더 자세히 살펴볼 수 있습니다.

중단점 사용하는 방법 알아보기