일반 디버깅 옵션
Visual Studio 디버거 옵션을 설정하려면 도구>옵션을 선택하고 디버깅에서 일반 옵션 옆에 있는 상자를 선택하거나 선택 취소합니다. 도구>설정 가져오기 및 내보내기>모든 설정 다시 설정을 사용하여 모든 기본 설정을 복원할 수 있습니다. 설정의 하위 집합을 다시 설정하려면 테스트하려는 설정을 변경하기 전에 설정 가져오기 및 내보내기 마법사를 사용하여 설정을 저장한 다음, 저장된 설정을 나중에 가져옵니다.
다음 일반 옵션을 설정할 수 있습니다.
모든 중단점을 삭제하기 전에 확인: 모든 중단점 삭제 명령을 완료하기 전에 사용자 확인을 요청하는 메시지를 표시합니다.
한 프로세스가 중단될 때 모든 프로세스 중단: 중단이 발생하면 디버거가 연결되어 있는 모든 프로세스를 동시에 중단합니다.
예외가 AppDomain 또는 관리/네이티브 경계를 넘어서면 중단: 관리 또는 혼합 모드 디버깅에서 다음 조건이 충족되는 경우 공용 언어 런타임은 애플리케이션 도메인 경계나 관리/네이티브 경계를 넘어서는 예외를 catch할 수 있습니다.
네이티브 코드가 COM Interop를 사용하여 관리 코드를 호출하고 관리 코드가 예외를 throw하는 경우. COM Interop 소개를 참조하세요.
애플리케이션 도메인 1에서 실행되는 관리 코드가 애플리케이션 도메인 2의 관리 코드를 호출하고 애플리케이션 도메인 2의 코드가 예외를 throw하는 경우. 애플리케이션 도메인으로 프로그래밍을 참조하세요.
코드가 리플렉션을 사용하여 함수를 호출하고 해당 함수가 예외를 throw하는 경우 리플렉션을 참조하세요.
조건 2 및 3에서는 공용 언어 런타임 대신 mscorlib
의 관리 코드를 통해 예외가 포착되는 경우가 있습니다. 이 옵션은 mscorlib
를 통해 catch된 예외에서의 중단에 영향을 미치지 않습니다.
주소 수준 디버깅 사용: 주소 수준(디스어셈블리 창, 레지스터 창 및 주소 중단점)에서 디버깅을 위한 고급 기능을 활성화합니다.
- 소스를 사용할 수 없을 경우 디스어셈블리 표시: 소스를 사용할 수 없는 코드를 디버그할 때 디스어셈블리 창이 자동으로 표시됩니다.
중단점 필터 사용: 특정 프로세스, 스레드 또는 컴퓨터에만 영향을 미치도록 중단점에 필터를 설정할 수 있습니다.
새 예외 도우미 사용: 예외 도우미(exception assistant)를 대체하는 예외 도우미(Exception Helper)를 사용하도록 설정합니다. (예외 도우미(Exception Helper)는 Visual Studio 2017부터 지원됨)
참고
관리 코드의 경우 이 옵션을 이전에 예외 도우미(exception assistant) 사용이라고 했습니다.
[내 코드만] 기능 사용: 디버거는 시스템 코드 및 최적화되었거나 디버깅 기호가 없는 다른 코드를 무시하고 사용자 코드("내 코드")만 표시하고 한 단계씩 실행합니다.
- 시작할 때 사용자 코드가 없으면 경고(관리 전용): 내 코드만 옵션을 활성화하고 디버깅을 시작하는 경우 사용자 코드('내 코드')가 없으면 경고 메시지가 나타납니다.
.NET Framework 소스 단계별 실행 사용: 디버거에서 .NET Framework 소스를 한 단계씩 실행할 수 있도록 허용합니다. 이 옵션을 활성화하면 자동으로 내 코드만 비활성화됩니다. .NET Framework 기호는 캐시 위치로 다운로드됩니다. 옵션 대화 상자, 디버깅 범주, 기호 페이지를 사용하여 캐시 위치를 변경합니다.
속성 및 연산자 건너뛰기(관리 전용) : 디버거가 관리 코드에서 속성 및 연산자를 한 단계씩 실행할 수 없도록 설정합니다.
속성 확인 및 기타 암시적 함수 호출 사용: 변수 창과 간략한 조사식 대화 상자에서 속성 자동 확인 및 암시적 함수 호출을 설정합니다.
- 변수 창의 개체에서 문자열 변환 함수 호출(C# 및 JavaScript 전용) : 변수 창에서 개체를 확인할 때 암시적 문자열 변환 호출을 실행합니다. 결과가 형식 이름 대신 문자열로 표시됩니다. C# 코드에서 디버깅하는 동안에만 적용됩니다. 이 설정은 DebuggerDisplay 특성을 통해 재정의될 수 있습니다(DebuggerDisplay 특성 사용 참조).
소스 서버 지원 사용: SrcSrv(srcsrv.dll
) 프로토콜을 구현하는 소스 서버로부터 소스 파일을 가져오도록 Visual Studio 디버거에 지시합니다. Team Foundation Server와 Debugging Tools for Windows는 프로토콜을 구현하는 두 가지 소스 서버입니다. SrcSrv 설치에 대한 자세한 내용은 SrcSrv 설명서를 참조하세요. 또한 기호 파일(.pdb) 및 원본 파일 지정을 참조하세요.
중요
.pdb 파일을 읽으면 파일에서 임의의 코드가 실행될 수 있으므로 반드시 서버를 신뢰해야 합니다.
소스 서버 진단 메시지를 출력 창에 표시: 소스 서버 지원이 활성화된 경우 이 설정은 진단 표시를 설정합니다.
부분 신뢰 어셈블리에 대해 소스 서버 허용(관리 전용): 소스 서버 지원이 활성화된 경우 이 설정은 부분 신뢰 어셈블리의 소스를 검색하지 않는 기본 동작을 재정의합니다.
항상 메시지를 표시하지 않고 신뢰할 수 없는 소스 서버 명령 실행: 원본 서버 지원이 활성화된 경우 이 설정은 신뢰할 수 없는 명령을 실행할 때 표시되는 기본 동작을 재정의합니다.
소스 링크 지원 사용: 소스 링크 정보가 포함된 .pdb 파일의 원본 파일을 다운로드하도록 Visual Studio 디버거에 지시합니다. 소스 링크에 대한 자세한 내용은 소스 링크 사양을 참조하세요.
중요
소스 링크는 http 또는 https를 사용하여 파일을 다운로드하므로 .pdb 파일을 신뢰해야 합니다.
- 모든 소스 링크 요청에 대해 Git 자격 증명 관리자 인증으로 대체: 소스 링크 지원을 사용하도록 설정하고 소스 링크 요청이 인증에 실패하는 경우 Visual Studio는 Git 자격 증명 관리자를 호출합니다.
중단점 및 현재 명령문의 전체 소스 줄 강조 표시(C++만 해당) : 디버거가 중단점이나 현재 문을 강조 표시할 때 전체 줄을 강조 표시합니다.
소스 파일이 원래 버전과 정확하게 일치해야 함: 디버깅 중인 실행 파일을 빌드하는 데 사용되는 소스 코드의 버전이 소스 파일과 일치하는지 확인하도록 디버거에 지시합니다. 버전이 일치하지 않으면 일치하는 소스를 찾으라는 메시지가 표시됩니다. 일치하는 소스가 없으면 디버깅하는 동안 소스 코드가 표시되지 않습니다.
[출력] 창의 모든 텍스트를 [직접 실행] 창으로 리디렉션: 일반적으로 출력 창에 표시되는 모든 디버거 메시지를 직접 실행 창으로 보냅니다.
변수 창에서 개체의 원시 구조체 표시: 모든 개체 구조체 뷰 사용자 지정을 해제합니다. 뷰 사용자 지정에 대한 자세한 내용은 관리 개체의 사용자 지정 뷰 만들기를 참조하세요.
모듈을 로드할 때 JIT 최적화 기능 사용 안 함(관리 전용) : 디버거가 연결되어 있는 동안 모듈이 로드되고 JIT가 컴파일될 때 관리 코드의 JIT 최적화를 해제합니다. 최적화를 해제하면 성능이 저하될 수 있지만 일부 문제를 보다 쉽게 디버깅할 수 있습니다. 내 코드만 기능을 사용하는 경우 JIT 최적화를 해제하면 사용자가 작성하지 않은 코드가 사용자 코드("내 코드")로 표시될 수 있습니다. 자세한 내용은 JIT 최적화 및 디버깅을 참조하세요.
ASP.NET에 대해 JavaScript 디버깅 사용(Chrome, Microsoft Edge 및 IE) : ASP.NET 앱용 스크립트 디버거를 사용하도록 설정합니다. Chrome에서 처음 사용하는 경우 브라우저에 로그인하여 설치한 Chrome 확장을 활성화해야 할 수 있습니다. 레거시 동작으로 되돌리려면 이 옵션을 비활성화합니다.
적용 가능한 대상의 JavaScript 디버그에 여러 대상 JavaScript 디버거를 사용(디버깅을 다시 시작해야 함) 브라우저와 백 엔드에 대한 연결을 동시에 사용하도록 설정하여 클라이언트 및 서버에서 실행 중인 코드를 편집기에서 바로 디버그할 수 있도록 합니다.
dll 내보내기 로드(네이티브 전용) : dll 내보내기 테이블이 로드됩니다. Windows 메시지, Windows 프로시저(WindowProcs), COM 개체, 마샬링 또는 기호가 없는 dll을 사용하여 작업하는 경우 dll 내보내기 테이블의 기호 정보가 유용할 수 있지만, dll 내보내기 정보를 읽으면 일부 오버헤드가 발생합니다. 따라서 이 기능은 기본적으로 해제되어 있습니다.
dll의 내보내기 테이블에서 사용할 수 있는 기호를 확인하려면 dumpbin /exports
를 사용하세요. 모든 32비트 시스템 dll에 기호를 사용할 수 있습니다. dumpbin /exports
출력을 읽으면 영숫자가 아닌 문자를 포함하여 정확한 함수 이름을 확인할 수 있습니다. 이 방법은 함수에 중단점을 설정하는 데 유용합니다. dll 내보내기 테이블에 있는 함수 이름은 디버거에서 일부가 잘린 상태로 나타날 수 있습니다. 호출은 현재 함수(가장 안쪽에 중첩된)가 맨 위에 표시되어 호출한 순서로 나열됩니다. 자세한 내용은 dumpbin /exports를 참조하십시오.
병렬 스택 다이어그램 거꾸로 표시: 병렬 스택 창에 스택이 표시되는 방향을 제어합니다.
기록된 데이터에서 값을 변경하지 않은 경우 GPU 메모리 액세스 예외 무시: 데이터가 변경되지 않은 경우 디버깅 중 검색된 경합 상태를 무시합니다. 자세한 내용은 GPU 코드 디버깅을 참조하세요.
관리되는 호환성 모드 사용: 다음과 같은 시나리오를 사용할 수 있도록 기본 디버깅 엔진을 레거시 버전으로 바꿉니다.
고유의 식 계산기를 제공하는 C#, Visual Basic 또는 F# 이외의 .NET 언어를 사용하는 경우(C++/CLI 포함)
혼합 모드 디버깅 중에 C++ 프로젝트에 편집하며 계속하기를 사용하려는 경우
참고
관리되는 호환성 모드를 선택하면 기본 디버깅 엔진에서만 구현되는 일부 기능이 비활성화됩니다. 레거시 디버깅 엔진은 Visual Studio 2012에서 대체되었습니다.
안전하지 않을 수 있는 프로세스에 대해 사용자 지정 디버거 시각화 도우미를 사용할 때 경고(관리 전용) : 디버그된 프로세스에서 코드를 실행 중인 사용자 지정 디버거 시각화 도우미를 사용할 경우 안전하지 않은 코드가 실행될 수 있으므로 Visual Studio에서 경고합니다.
Windows 디버그 힙 할당자 사용(네이티브 전용) : Windows 디버그 힙을 사용하여 힙 진단을 향상시킬 수 있도록 합니다. 이 옵션을 사용하면 디버깅 성능에 영향을 줍니다.
XAML용 UI 디버깅 도구 사용: 지원되는 프로젝트 형식에 대한 디버깅을 시작하면(F5) 라이브 시각적 트리 및 라이브 속성 탐색기 창이 나타납니다. 자세한 내용은 디버깅하는 동안 XAML 속성 검사를 참조하세요.
라이브 표시 트리에서 선택한 요소 미리 보기: 컨텍스트가 선택된 XAML 요소가 라이브 시각적 트리 창에서도 선택됩니다.
애플리케이션에서 런타임 도구 표시: 디버깅 중인 XAML 애플리케이션의 주 창에 있는 도구 모음에 라이브 시각적 트리 명령을 표시합니다.
XAML 핫 다시 로드 사용: 앱이 실행 중일 때 XAML 코드와 함께 XAML 핫 다시 로드 기능을 사용할 수 있습니다. (이 기능은 이전에 "XAML 편집하며 계속하기"라고 했습니다.)
내 XAML만 사용: Visual Studio 2019 버전 16.4부터 라이브 시각적 트리는 기본적으로 사용자 코드로 분류된 XAML만 표시합니다. 이 옵션을 사용하지 않도록 설정하면 생성된 모든 XAML 코드가 도구에 표시됩니다.
요소를 선택할 때 선택 모드 해제 Visual Studio 2019 버전 16.4부터 요소를 선택하면 앱 내 도구 모음 요소 선택기 단추(선택 영역 사용)가 꺼집니다. 이 옵션을 사용하지 않도록 설정하면 앱 내 도구 모음 단추를 다시 클릭할 때까지 요소 선택이 계속 유지됩니다.
문서 저장 시 XAML 핫 다시 로드 적용 Visual Studio 2019 버전 16.6부터 문서를 저장할 때 XAML 핫 다시 로드를 적용합니다.
디버그하는 동안 진단 도구 사용: 디버깅하는 동안 진단 도구 창이 나타납니다.
디버깅 중에 경과한 시간 성능 팁 표시: 디버깅 중에 지정된 메서드를 호출하는 데 경과된 시간이 코드 창에 표시됩니다.
편집하며 계속하기 사용: 디버깅 중에 편집하며 계속하기 기능을 사용하도록 설정합니다.
네이티브 편집하며 계속하기 사용: 네이티브 C++ 코드 디버깅 중에 편집하며 계속하기 기능을 사용할 수 있습니다. 자세한 내용은 편집하며 계속하기(C++)를 참조하세요.
계속할 때 변경 내용 적용(네이티브 전용) : Visual Studio에서는 중단 상태에서 프로세스를 계속하면 진행 중인 코드 변경 내용을 자동으로 컴파일하여 적용합니다. 이 옵션을 선택하지 않으면 디버그 메뉴에서 코드 변경 내용 적용 항목을 사용하여 변경 내용을 적용할 수 있습니다.
부실 코드 경고(네이티브 전용): 부실 코드 경고를 가져옵니다.
디버깅 중에 편집기에서 클릭하여 실행 단추 표시: 이 옵션을 선택하면 디버깅하는 동안 클릭하여 실행 단추가 표시됩니다.
디버깅이 중지되면 자동으로 콘솔 닫기: 디버깅 세션이 끝날 때 콘솔을 닫도록 Visual Studio에 지시합니다.
빠른 식 계산 사용(관리 전용) : 디버거가 간단한 속성 및 메서드의 실행을 시뮬레이션하여 더 빠른 계산을 시도할 수 있습니다.
외부 프로세스에 디버그 기호 로드(네이티브 전용) 디버깅 중에 이 메모리 최적화를 사용합니다.
디버거에서 중단 시 포그라운드에 Visual Studio 표시 디버거에서 일시 중지할 때 Visual Studio를 포그라운드로 전환합니다.
확장된 데이터 팁을 클릭할 때까지 열어 두세요. 이 옵션을 선택하면 확장된 데이터 팁은 멀리 클릭할 때까지 확장된 상태로 유지됩니다.
이전 버전의 Visual Studio에서 사용 가능한 옵션
이전 버전의 Visual Studio를 사용하는 경우 몇 가지 추가 옵션이 있을 수 있습니다.
UWP JavaScript 앱용 Edge 개발자 도구 사용(실험적) : Microsoft Edge에서 UWP JavaScript 앱용 Edge 개발자 도구를 사용하도록 설정합니다.
ASP.NET에 대해 레거시 크롬 JavaScript 디버거 사용: ASP.NET에 대해 레거시 Chrome JavaScript 스크립트 디버거를 사용하도록 설정합니다. Chrome에서 처음 사용하는 경우 브라우저에 로그인하여 설치한 Chrome 확장을 활성화해야 할 수 있습니다.
예외 도우미 사용: 관리 코드의 경우 예외 도우미를 사용하도록 설정합니다. Visual Studio 2017부터 예외 도우미(Exception Helper)가 예외 도우미(Exception Assistant)를 대체했습니다.
처리되지 않은 예외에 대한 호출 스택 해제: 호출 스택 창에서 호출 스택을 처리되지 않은 예외가 발생하기 전 시점으로 롤백합니다.
관리자 권한으로 Visual Studio를 실행하는 경우 크롬 JavaScript 디버깅을 시작하는 실험적 방법 사용: JavaScript 디버깅 중에 Chrome을 시작하는 새로운 방법을 시도해 보도록 Visual Studio에 지시합니다.
시작할 때 기호가 없으면 경고(네이티브 전용) : 디버거에 기호 정보가 없는 프로그램을 디버그할 때 경고 대화 상자가 표시됩니다.
시작할 때 스크립트 디버깅을 사용할 수 없으면 경고: 스크립트 디버깅을 사용하지 않고 디버거를 시작할 때 경고 대화 상자가 표시됩니다.
관리 호환성 모드 사용: 이 옵션을 선택하면 디버거는 C++/CLI 코드를 디버그할 때 필요한 Visual Studio 2010 관리 디버거를 사용합니다.
기본 호환성 모드 사용: 이 옵션을 선택하면 디버거에서는 새 네이티브 디버거 대신 Visual Studio 2010의 네이티브 디버거를 사용합니다.
- 새 디버깅 엔진에서는 .NET C++ 식 평가를 지원하지 않으므로 .NET C++ 코드를 디버깅할 경우 이 옵션을 사용합니다. 하지만 기본 호환성 모드를 사용할 경우 현재 디버거 구현에 따라 많은 기능을 작동할 수 없습니다. 예를 들어 레거시 엔진에는 Visual Studio 2015 프로젝트에 기본 제공되는
std::string
과 같은 형식에 대한 시각화 도우미가 많이 부족합니다. 이러한 경우 최적의 디버깅 환경을 위해 Visual Studio 2013 프로젝트를 사용합니다.