DebuggableAttribute.DebuggingModes 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
JIT(Just-In-Time) 컴파일러의 디버깅 모드를 지정합니다.
이 열거형은 멤버 값의 비트 조합을 지원합니다.
public: enum class DebuggableAttribute::DebuggingModes
[System.Flags]
public enum DebuggableAttribute.DebuggingModes
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum DebuggableAttribute.DebuggingModes
[<System.Flags>]
type DebuggableAttribute.DebuggingModes =
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DebuggableAttribute.DebuggingModes =
Public Enum DebuggableAttribute.DebuggingModes
- 상속
- 특성
필드
Default | 1 | JIT(Just In Time) 컴파일러에 기본 동작을 사용하도록 지시합니다. 기본 동작은 최적화를 사용하고, 편집하며 계속하기 지원을 사용하지 않고, 기호 저장소 시퀀스 위치가 있는 경우 해당 위치를 사용하는 것 등입니다. .NET Framework 버전 2.0부터 JIT 추적 정보인 메서드 내부의 네이티브 코드 오프셋에 대한 MSIL(Microsoft Intermediate Language) 오프셋이 항상 생성됩니다. |
DisableOptimizations | 256 | 컴파일러에서 더 작지만 빠르고 효율적인 출력 파일을 만들기 위해 수행하는 최적화 기능을 비활성화합니다. 최적화 작업을 수행하면 출력 파일에서 코드가 다시 정렬되기 때문에 디버깅이 어려워질 수 있습니다. 일반적으로 디버깅하는 동안에는 최적화 기능을 비활성해야 합니다. 버전 2.0 이상에서는 이 값을 기본값(Default | DisableOptimizations)과 결합하여 JIT 추적을 활성화하고 최적화를 비활성화합니다. |
EnableEditAndContinue | 4 | 편집하며 계속하기를 활성화합니다. 편집하며 계속하기를 활성화하면 프로그램이 중단 모드에 있는 동안 소스 코드를 변경할 수 있습니다. 편집하며 계속하기 기능은 컴파일러에 따라 다릅니다. |
IgnoreSymbolStoreSequencePoints | 2 | PDB(프로그램 데이터베이스) 시퀀스 위치가 아닌 암시적 MSIL 시퀀스 위치를 사용합니다. 일반적으로 기호 정보에는 소스의 각 줄마다 최소한 하나의 MSIL(Microsoft Intermediate Language) 오프셋이 들어 있습니다. JIT(Just-In-Time) 컴파일러에서 메서드를 컴파일할 때, 컴파일러에서는 프로파일링 서비스에 저장된 MSIL 오프셋 목록을 요청합니다. 이러한 MSIL 오프셋을 시퀀스 위치라고 합니다. |
None | 0 | .NET Framework 버전 2.0부터 JIT 추적 정보가 항상 생성되며 이 플래그는 IsJITTrackingEnabled 속성을 DisableOptimizations 플래그와 달리 None 플래그는 JIT 최적화를 사용하지 않도록 설정하는 데 사용할 수 없습니다. |
설명
열거형은 DebuggableAttribute.DebuggingModes 코드 생성 중에 런타임이 디버거에 중요한 정보를 추적하는 방법을 지정합니다. 이 정보는 디버거가 풍부한 디버깅 환경을 제공하는 데 도움이 됩니다. .NET Framework 버전 1.1과 달리 버전 2.0 이상에서는 JIT(Just-In-Time) 컴파일러에서 추적을 해제할 수 없습니다. JIT 추적은 항상 디버깅 가능한 파일에 대해 사용하도록 설정됩니다. 버전 2.0 이상에서는 열거형 값이 다음과 같은 효과를 갖습니다.
디버깅 모드 | 결과 |
---|---|
None | 추적, JIT 최적화 사용 |
기본값 | 추적, JIT 최적화 사용 |
DisableOptimizations | 추적, JIT 최적화 사용 |
기본값 | DisableOptimizations | 추적, JIT 최적화 사용 안 함 |
시퀀스 지점은 중단점 설정과 같이 디버거 사용자가 고유하게 참조할 수 있어야 하는 MSIL(Microsoft Intermediate Language) 코드의 위치를 나타내는 데 사용됩니다. JIT 컴파일러는 두 개의 서로 다른 시퀀스 지점에서 MSIL을 단일 네이티브 명령으로 컴파일하지 않도록 합니다. 기본적으로 JIT 컴파일러는 PDB(프로그램 데이터베이스) 파일의 기호 저장소에서 추가 시퀀스 지점 목록을 검사합니다. 그러나 PDB 파일을 로드하려면 파일을 사용할 수 있어야 하며 성능에 부정적인 영향을 줍니다. 버전 2.0부터 컴파일러에서는 MSIL " 지침을 사용하여 MSIL 코드 스트림에서 "암시적 시퀀스 지점"nop"
을 내보낼 수 있습니다. 이러한 컴파일러가 IgnoreSymbolStoreSequencePoints
PDB 파일을 로드하지 않도록 공용 언어 런타임에 알리도록 플래그를 설정해야 합니다.
참고
이 열거형은 주로 언어 개발자가 사용합니다. 일반적으로 애플리케이션 개발에 사용 됩니다 하지 않습니다. 개발 환경은 /debug 및 /optimize와 같은 컴파일러 매개 변수를 기반으로 사용합니다DebuggableAttribute.DebuggingModes.
적용 대상
.NET