다음을 통해 공유


Visual Studio에서 디버거에 대한 생산성 팁과 요령 알아보기

Visual Studio 디버거에 대한 몇 가지 생산성 팁과 요령에 대해 알아보려면 이 항목을 참조하세요. 디버거의 기본 기능을 보려면 디버거를 먼저 살펴보세요. 이 항목에서는 기능 둘러보기에서 포함되지 않은 일부 영역을 다룹니다.

키보드 단축키

디버깅과 관련된 가장 일반적인 바로 가기 키 목록은 바로 가기 키의 디버그 섹션을 참조하세요.

데이터 팁을 고정하기

디버깅할 때 데이터 팁을 자주 가리킨다면, 변수의 데이터 팁을 고정하여 빠르게 이용할 수 있도록 해보세요. 변수는 다시 시작한 후에도 고정된 상태로 유지됩니다. 데이터 팁을 고정하려면 고정 아이콘 위에 마우스를 가리킨 후 클릭합니다. 여러 변수를 고정할 수 있습니다.

데이터 팁 고정

데이터 팁을 확장된 상태로 유지(고정된 데이터 팁) 또는 데이터 팁을 투명하게 만드는 등 여러 가지 다른 방법으로 데이터 팁을 사용자 지정할 수도 있습니다. 자세한 내용은 코드 편집기에서 DataTips의 데이터 값 보기를 참조하세요.

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

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

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

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

XAML 코드 편집 및 디버깅 계속

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

재현하기 어려운 디버그 문제

앱에서 특정 상태를 다시 만드는 데 어렵거나 시간이 많이 걸리는 경우 조건부 중단점을 사용하는 것이 도움이 될 수 있는지 여부를 고려합니다. 조건부 중단점 및 필터 중단점을 사용하여 앱이 원하는 상태(예: 변수가 잘못된 데이터를 저장하는 상태)가 될 때까지 앱 코드에 침입하지 않도록 할 수 있습니다. 식, 필터, 적중 횟수 등을 사용하여 조건을 설정할 수 있습니다.

조건부 중단점을 만들려면

  1. 중단점 아이콘(빨간색 구)을 마우스 오른쪽 단추로 클릭하고 조건을 선택합니다.

  2. 중단점 설정 창에서 식을 입력합니다.

    조건부 중단점

  3. 다른 유형의 조건에 관심이 있는 경우 중단점 설정 대화 상자에서 조건식 대신 필터를 선택한 다음 필터 팁을 따릅니다.

디버거에 표시할 데이터 구성

C#, Visual Basic 및 C++(C++/CLI 코드만 해당)의 경우 DebuggerDisplay 특성을 사용하여 표시할 정보를 디버거에 알릴 수 있습니다. C++ 코드의 경우 Natvis 시각화를 사용하여 동일한 작업을 수행할 수 있습니다.

동일한 애플리케이션에 반복적으로 연결

프로세스에 연결 기능을 사용하는 경우 디버그>의 프로세스에 다시 연결 (Shift+Alt+P)을 선택하여 이전에 연결한 프로세스에 신속하게 다시 연결할 수 있습니다. 이 명령을 선택하면 디버거는 먼저 이전 프로세스 ID를 일치시키려고 시도하고 실패하는 경우 이전 프로세스 이름과 일치시켜 연결한 마지막 프로세스에 즉시 연결하려고 시도합니다. 일치하는 항목이 없거나 여러 프로세스의 이름이 같은 경우 올바른 프로세스를 선택할 수 있도록 프로세스에 연결 대화 상자가 열립니다.

범위를 벗어난 개체 추적(C#, Visual Basic)

조사식 창과 같은 디버거 창을 사용하여 변수를 쉽게 볼 수 있습니다. 그러나 조사식 창에서 변수가 범위를 벗어나면 회색으로 표시될 수 있습니다. 일부 앱 시나리오에서는 변수가 범위를 벗어난 경우에도 변수 값이 변경될 수 있으며, 변수를 자세히 관찰할 수 있습니다(예: 변수가 가비지 수집될 수 있음). 조사식 창에서 개체 ID를 만들어 변수를 추적할 수 있습니다.

개체 ID를 만들려면

  1. 추적하려는 변수 근처에 중단점을 설정합니다.

  2. 디버거(F5)를 시작하고 중단점에서 중지합니다.

  3. 로컬 창(Windows > 로컬 디버그>)에서 변수를 찾고, 변수를 마우스 오른쪽 단추로 클릭하고, 개체 ID 만들기를 선택합니다.

    개체 ID 만들기

  4. $ 창에 에 더해진 어떤 숫자가 보일 것입니다. 이 변수는 개체 ID입니다.

  5. 개체 ID 변수를 마우스 오른쪽 단추로 클릭하고 감시 추가를 선택합니다.

자세한 내용은 개체 ID 만들기를 참조하세요.

함수의 반환 값 보기

함수의 반환 값을 보려면 코드를 단계별로 실행하는 동안 자동 창에 표시되는 함수를 확인합니다. 함수의 반환 값을 보려면 관심 있는 함수가 이미 실행되었는지 확인합니다(현재 함수 호출에서 중지된 경우 F10 키를 한 번 누릅니다). 창이 닫힌 경우 Windows > 자동 디버그 > 를 사용하여 자동 창을 엽니다.

Autos Window

또한 직접 실행 창에 함수를 입력하여 반환 값을 볼 수 있습니다. (디버그 > Windows > 즉시를 사용하여 엽니다.)

직접 실행 창

조사직접 실행 창에서 의사변수 (예: $ReturnValue)를 사용할 수도 있습니다.

시각화 도우미에서 문자열 검사

문자열을 사용할 때 서식이 지정된 전체 문자열을 보는 것이 유용할 수 있습니다. 일반 텍스트, XML, HTML 또는 JSON 문자열을 보려면 문자열 값이 포함된 변수를 마우스로 가리키면서 돋보기 아이콘 VisualizerIcon 을 클릭합니다.

문자열 시각화 도우미 열기

문자열 시각화 도우미는 문자열 형식에 따라 문자열 형식이 잘못된지 여부를 확인하는 데 도움이 될 수 있습니다. 예를 들어 빈 필드는 시각화 도우미 형식에서 문자열이 인식되지 않음을 나타냅니다. 자세한 내용은 문자열 시각화 도우미 대화 상자를 참조하세요.

JSON 문자열 시각화 도우미

디버거 창에 표시되는 DataSet 및 DataTable 개체와 같은 몇 가지 다른 형식의 경우 기본 제공 시각화 도우미를 열 수도 있습니다.

메모리 사용량 분석

힙의 스냅샷을 만들고 비교하고, 메모리 사용량을 최적화하고, 메모리 사용량 도구를 사용하여 메모리 누수 항목을 찾을 수 있습니다. 자세한 내용은 메모리 분석 도구 선택을 참조하세요.

덤프 파일 만들기

덤프 파일은 실행 중인 프로세스와 특정 시점에 앱에 대해 로드된 모듈을 보여 주는 스냅샷입니다. 힙 정보가 포함된 덤프는 해당 시점의 앱 메모리 스냅샷도 포함합니다. 덤프는 개발자가 액세스할 수 없는 컴퓨터에서 문제를 디버그하는 데 주로 사용됩니다.

디버그에서 덤프 저장...을 선택합니다.

덤프 파일을 분석하려면 Visual Studio에서 파일 > 열기 를 선택합니다. 덤프 파일을 사용하여 디버깅을 시작하려면 관리 전용으로 디버그, 네이티브 전용으로 디버그, 혼합으로 디버그 또는 관리 메모리로 디버그를 선택합니다.

자세한 내용은 덤프 파일을 참조하세요.

처리된 예외에 대한 코드 나누기

디버거는 처리되지 않은 예외가 발생할 때 코드 실행을 중단합니다. 그러나 처리된 예외(예: 블록 내에서 try/catch 발생하는 예외)도 버그의 원본이 될 수 있으며 언제 발생하는지 조사할 수 있습니다. 예외 설정 대화 상자에서 옵션을 구성하여 처리된 예외에 대한 코드로 나누도록 디버거를 구성할 수 있습니다. Windows > 예외 설정 디버그>를 선택하여 이 대화 상자를 엽니다.

예외 설정 대화 상자를 사용하면 디버거에 특정 예외에 대한 코드를 중단하도록 지시할 수 있습니다. 아래 그림에서 디버거는 System.NullReferenceException이 발생할 때마다 코드 실행을 중단합니다. 자세한 내용은 예외 관리를 참조하세요.

예외 설정 대화 상자

실행 흐름 변경

디버거가 코드 줄에서 일시 중지된 상태에서 마우스를 사용하여 왼쪽의 노란색 화살표 포인터를 잡습니다. 노란색 화살표 포인터를 코드 실행 경로의 다른 지점으로 이동합니다. 그런 다음 F5 또는 단계 명령을 사용하여 앱을 계속 실행합니다.

실행 포인터 이동

실행 흐름을 변경하여 디버거를 다시 시작하지 않고 다른 코드 실행 경로를 테스트하거나 코드를 다시 실행하는 등의 작업을 수행할 수 있습니다. 자세한 내용은 실행 포인터 이동을 참조하세요.

경고

이 기능에 주의해야 하는 경우가 많으며 도구 설명에 경고가 표시됩니다. 다른 경고도 표시할 수 있습니다. 포인터를 이동하면 앱을 이전 애플리케이션 상태로 되돌릴 수 없습니다.

교착 상태 및 경합 상태 디버깅

다중 스레드 앱에 공통적인 문제의 종류를 디버그해야 하는 경우 디버깅하는 동안 스레드의 위치를 보는 데 도움이 되는 경우가 많습니다. 이 작업은 원본에서 스레드 표시 단추를 사용하여 쉽게 수행할 수 있습니다.

소스 코드에 스레드를 표시하려면 다음을 수행합니다.

  1. 디버그 도구 모음에 있는 소스에서 스레드 보기 단추와 Show Threads in Source 단추를 클릭합니다.

  2. 창의 왼쪽에 있는 배수로를 확인합니다. 이 줄에는 두 개의 천과 유사한 스레드 마커 아이콘 스레드 표식이 표시됩니다. 스레드 표식은 스레드가 이 위치에서 중지되었음을 나타냅니다.

    중단점에 의해 스레드 표식이 부분적으로 숨겨질 수 있음을 명심하십시오.

  3. 포인터를 스레드 표식 위로 마우스로 가리킵니다. DataTip이 나타납니다. DataTip은 중지된 각 스레드의 이름 및 스레드 ID 번호를 알려줍니다.

    병렬 스택 창에서 스레드의 위치를 볼 수도 있습니다.

디버거가 앱에 연결하는 방법을 더 잘 알아봅니다(C#, C++, Visual Basic, F#)

실행 중인 앱에 연결하기 위해 디버거는 디버그하려는 앱과 정확히 동일한 빌드에 대해 생성된 기호(.pdb) 파일을 로드합니다. 일부 시나리오에서는 기호 파일에 대한 약간의 지식이 도움이 될 수 있습니다. Visual Studio에서 모듈 창을 사용하여 기호 파일을 로드하는 방법을 검사할 수 있습니다.

모듈 창을 디버깅할 때 디버그 > Windows > 모듈을 선택하여 엽니다. 모듈 창에서는 디버거가 사용자 코드로 처리하는 모듈 또는 내 코드 및 모듈의 기호 로드 상태를 알 수 있습니다. 대부분의 시나리오에서 디버거는 사용자 코드에 대한 기호 파일을 자동으로 찾지만 .NET 코드, 시스템 코드 또는 타사 라이브러리 코드를 한 단계씩 실행(또는 디버그)하려면 올바른 기호 파일을 가져오려면 추가 단계가 필요합니다.

ViewSymbolInformation모듈 창

기호 로드를 마우스 오른쪽 단추로 클릭하고 선택하여 모듈 창에서 직접 기호 정보를 로드할 수 있습니다.

경우에 따라 앱 개발자는 일치하는 기호 파일 없이(공간을 줄이기 위해) 앱을 제공하지만 나중에 릴리스된 버전을 디버그할 수 있도록 빌드에 일치하는 기호 파일의 복사본을 유지합니다.

디버거가 코드를 사용자 코드로 분류하는 방법을 알아보려면 내 코드만 참조하세요. 기호 파일에 대한 자세한 내용은 Visual Studio 디버거에서 기호(.pdb) 및 원본 파일 지정을 참조하세요.

더 알아보세요

추가 팁과 요령 및 자세한 내용은 다음 블로그 게시물을 참조하세요.

바로 가기 키