다음을 통해 공유


DebuggableAttribute.DebuggingModes 열거형

정의

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
상속
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 속성을 false로 설정하는 경우를 제외하고는 Default와 동일한 영향을 줍니다. 그러나 JIT 추적은 항상 사용하도록 설정되어 있으므로 버전 2.0 이상에서는 속성 값이 무시됩니다.

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.

적용 대상