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
- 상속
- 특성
필드
| Name | 값 | Description |
|---|---|---|
| None | 0 | .NET Framework 버전 2.0부터 JIT 추적 정보가 항상 생성되며, 이 플래그는 IsJITTrackingEnabled 속성을 플래그와 DisableOptimizations 달리 JIT 최적화를 None 사용하지 않도록 설정하는 데 플래그를 사용할 수 없습니다. |
| Default | 1 | JIT(Just-In-Time) 컴파일러에 최적화 사용, 편집 및 계속 지원 사용 안 함, 기호 저장소 시퀀스 지점 사용(있는 경우) 등의 기본 동작을 사용하도록 지시합니다. .NET Framework 버전 2.0부터 JIT 추적 정보, 메서드 내의 네이티브 코드 오프셋에 대한 MSIL(Microsoft 중간 언어) 오프셋이 항상 생성됩니다. |
| IgnoreSymbolStoreSequencePoints | 2 | PDB(프로그램 데이터베이스) 시퀀스 지점이 아닌 암시적 MSIL 시퀀스 지점을 사용합니다. 기호화된 정보에는 일반적으로 각 소스 줄에 대해 하나 이상의 MSIL(Microsoft 중간 언어) 오프셋이 포함됩니다. JIT(Just-In-Time) 컴파일러가 메서드를 컴파일하려고 할 때 프로파일링 서비스에 유지되어야 하는 MSIL 오프셋 목록을 요청합니다. 이러한 MSIL 오프셋을 시퀀스 포인트라고 합니다. |
| EnableEditAndContinue | 4 | 편집을 사용하도록 설정하고 계속합니다. 편집하고 계속하면 프로그램이 중단 모드에 있는 동안 소스 코드를 변경할 수 있습니다. 편집하고 계속하는 기능은 컴파일러에 따라 달라집니다. |
| DisableOptimizations | 256 | 컴파일러에서 수행하는 최적화를 사용하지 않도록 설정하여 출력 파일을 더 작고, 더 빠르고, 더 효율적으로 만듭니다. 최적화로 인해 출력 파일에서 코드가 다시 정렬되어 디버깅이 어려워질 수 있습니다. 일반적으로 디버깅하는 동안 최적화를 사용하지 않도록 설정해야 합니다. 버전 2.0 이상에서는 이 값을 기본값과 결합합니다(기본값 | DisableOptimizations) - 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 중간 언어) 코드의 위치를 나타내는 데 사용됩니다. JIT 컴파일러는 서로 다른 두 시퀀스 지점에서 MSIL을 단일 네이티브 명령으로 컴파일하지 않도록 합니다. 기본적으로 JIT 컴파일러는 PDB(프로그램 데이터베이스) 파일의 기호 저장소에서 추가 시퀀스 지점 목록을 검사합니다. 그러나 PDB 파일을 로드하려면 파일을 사용할 수 있어야 하며 성능에 부정적인 영향을 미칩니다. 버전 2.0부터 컴파일러는 MSIL "nop" 지침을 사용하여 MSIL 코드 스트림에서 "암시적 시퀀스 지점"을 내보낼 수 있습니다. 이러한 컴파일러는 PDB 파일을 로드하지 않도록 공용 언어 런타임에 알리는 플래그를 설정 IgnoreSymbolStoreSequencePoints 해야 합니다.
메모
이 열거형은 주로 언어 개발자가 사용합니다. 일반적으로 애플리케이션 개발에는 사용되지 않습니다. 개발 환경은 /debug 및 /optimize와 같은 컴파일러 매개 변수를 기반으로 사용합니다DebuggableAttribute.DebuggingModes.