Visual Studio의 디버거 관련 생산성 팁과 요령 알아보기

이 항목을 읽고 Visual Studio 디버거에 대한 몇 가지 생산성 팁과 요령을 알아보세요. 디버거의 기본 기능에 대한 자세한 내용은 디버거 소개를 참조하세요. 이 항목에서는 기능 둘러보기에 포함되지 않은 몇 가지 영역을 다룹니다.

바로 가기 키

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

데이터 고정 팁

디버그하는 동안 데이터 팁을 마우스로 자주 가리키는 경우 변수에 대한 데이터 팁을 고정하여 신속하게 액세스할 수 있습니다. 다시 시작한 후에도 변수는 고정된 상태로 유지됩니다. 데이터 팁을 고정하려면 고정 아이콘을 마우스로 가리킨 상태에서 클릭합니다. 여러 변수를 고정할 수 있습니다.

Pinning a Data Tip

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

코드를 편집하며 디버깅 계속하기(C#, VB, C++)

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

Edit and continue debugging

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

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

디버깅 세션 중 XAML 코드를 수정하려면 XAML 핫 다시 로드를 사용하여 코드 작성 및 실행 중인 XAML 코드 디버그를 참조하세요.

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

앱의 특정 상태를 재현하기 어렵거나 시간이 오래 걸리는 경우 조건부 중단점 사용이 도움이 될 수 있는지 고려해 보세요. 앱이 필요한 상태(예: 변수가 잘못된 데이터를 저장하는 상태)가 될 때까지 앱 코드가 중단되지 않도록 조건부 중단점 및 필터 중단점을 사용할 수 있습니다. 조건은 식, 필터, 적중 횟수 등을 사용하여 설정할 수 있습니다.

조건부 중단점을 만들려면

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

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

    Conditional Breakpoint

  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 만들기를 선택합니다.

    Create an Object ID

  4. $ 창에 지역 창을 닫습니다. 이 변수는 개체 ID입니다.

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

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

함수의 반환 값 보기

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

Autos Window

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

Immediate Window

조사식즉시 실행 창에서 $ReturnValue와 같은 의사 변수를 사용할 수도 있습니다.

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

문자열로 작업할 때 서식이 지정된 전체 문자열을 보는 것이 도움이 될 수 있습니다. 일반 텍스트, XML, HTML 또는 JSON 문자열을 보려면 문자열 값을 포함하는 변수를 마우스로 가리킨 상태에서 돋보기 아이콘(VisualizerIcon)을 클릭합니다.

Open a String Visualizer

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

JSON String Visualizer

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

메모리 사용량 분석

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

덤프 파일 만들기

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

덤프 파일을 저장해야 하는 경우 디버그 > 다른 이름으로 덤프 저장을 선택합니다.

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

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

처리된 예외에서 코드 중단

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

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

Exception Settings Dialog Box

실행 흐름 변경

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

Move the Execution Pointer

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

Warning

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

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

다중 스레드 앱에 공통적인 문제 유형을 디버그해야 하는 경우 디버그하는 동안 스레드의 위치를 확인하는 것이 도움이 되는 경우가 많습니다. 소스의 스레드 표시 단추를 사용하여 이 작업을 쉽게 수행할 수 있습니다.

소스 코드에서 스레드를 표시하려면:

  1. 디버그하는 동안 디버그 도구 모음에서 소스의 스레드 표시 단추(Show Threads in Source)를 클릭합니다.

  2. 창 왼쪽의 여백을 확인합니다. 이 줄에는 실 두 가닥 모양의 스레드 마커 아이콘(Thread Marker)이 표시됩니다. 스레드 마커는 이 위치에서 스레드가 중지되었음을 나타냅니다.

    스레드 마커는 중단점에 의해 일부가 가려질 수 있습니다.

  3. 스레드 마커에 포인터를 올려 놓습니다. DataTips가 나타납니다. DataTip을 통해 중지된 각 스레드의 이름과 스레드 ID 번호를 알 수 있습니다.

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

디버거를 앱에 연결하는 방법 자세히 알아보기(C#, C++, Visual Basic, F#)

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

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

View symbol information in the Modules window

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

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

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

자세한 정보

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

바로 가기 키