COR_PRF_MONITOR 열거형

프로파일러가 구독하려는 동작, 기능 또는 이벤트를 지정하는 데 사용되는 값을 포함합니다.

구문

typedef enum {  
    COR_PRF_MONITOR_NONE                = 0x00000000,  
    COR_PRF_MONITOR_FUNCTION_UNLOADS    = 0x00000001,  
    COR_PRF_MONITOR_CLASS_LOADS         = 0x00000002,  
    COR_PRF_MONITOR_MODULE_LOADS        = 0x00000004,  
    COR_PRF_MONITOR_ASSEMBLY_LOADS      = 0x00000008,  
    COR_PRF_MONITOR_APPDOMAIN_LOADS     = 0x00000010,  
    COR_PRF_MONITOR_JIT_COMPILATION     = 0x00000020,  
    COR_PRF_MONITOR_EXCEPTIONS          = 0x00000040,  
    COR_PRF_MONITOR_GC                  = 0x00000080,  
    COR_PRF_MONITOR_OBJECT_ALLOCATED    = 0x00000100,  
    COR_PRF_MONITOR_THREADS             = 0x00000200,  
    COR_PRF_MONITOR_REMOTING            = 0x00000400,  
    COR_PRF_MONITOR_CODE_TRANSITIONS    = 0x00000800,  
    COR_PRF_MONITOR_ENTERLEAVE          = 0x00001000,  
    COR_PRF_MONITOR_CCW                 = 0x00002000,  
    COR_PRF_MONITOR_REMOTING_COOKIE     = 0x00004000 |
                                          COR_PRF_MONITOR_REMOTING,  
    COR_PRF_MONITOR_REMOTING_ASYNC      = 0x00008000 |
                                          COR_PRF_MONITOR_REMOTING,  
    COR_PRF_MONITOR_SUSPENDS            = 0x00010000,  
    COR_PRF_MONITOR_CACHE_SEARCHES      = 0x00020000,  
    COR_PRF_ENABLE_REJIT                = 0x00040000,  
    COR_PRF_ENABLE_INPROC_DEBUGGING     = 0x00080000,  
    COR_PRF_ENABLE_JIT_MAPS             = 0x00100000,  
    COR_PRF_DISABLE_INLINING            = 0x00200000,  
    COR_PRF_DISABLE_OPTIMIZATIONS       = 0x00400000,  
    COR_PRF_ENABLE_OBJECT_ALLOCATED     = 0x00800000,  
    COR_PRF_MONITOR_CLR_EXCEPTIONS      = 0x01000000,  
    COR_PRF_MONITOR_ALL                 = 0x0107FFFF,  
    COR_PRF_ENABLE_FUNCTION_ARGS        = 0X02000000,  
    COR_PRF_ENABLE_FUNCTION_RETVAL      = 0X04000000,  
    COR_PRF_ENABLE_FRAME_INFO           = 0X08000000,  
    COR_PRF_ENABLE_STACK_SNAPSHOT       = 0X10000000,  
    COR_PRF_USE_PROFILE_IMAGES          = 0x20000000,  
    COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST  
                                        = 0x40000000,  
    COR_PRF_DISABLE_ALL_NGEN_IMAGES     = 0x80000000,  
    COR_PRF_ALL                         = 0x8FFFFFFF,  
    COR_PRF_REQUIRE_PROFILE_IMAGE       = COR_PRF_USE_PROFILE_IMAGES |
                                          COR_PRF_MONITOR_CODE_TRANSITIONS |
                                          COR_PRF_MONITOR_ENTERLEAVE,  
    COR_PRF_ALLOWABLE_AFTER_ATTACH      = COR_PRF_MONITOR_THREADS |  
                                          COR_PRF_MONITOR_MODULE_LOADS |  
                                          COR_PRF_MONITOR_ASSEMBLY_LOADS |  
                                          COR_PRF_MONITOR_APPDOMAIN_LOADS |  
                                          COR_PRF_ENABLE_STACK_SNAPSHOT |  
                                          COR_PRF_MONITOR_GC |  
                                          COR_PRF_MONITOR_SUSPENDS |  
                                          COR_PRF_MONITOR_CLASS_LOADS |  
                                          COR_PRF_MONITOR_JIT_COMPILATION,  
    COR_PRF_MONITOR_IMMUTABLE           = COR_PRF_MONITOR_CODE_TRANSITIONS |  
                                          COR_PRF_MONITOR_REMOTING |  
                                          COR_PRF_MONITOR_REMOTING_COOKIE |  
                                          COR_PRF_MONITOR_REMOTING_ASYNC |  
                                          COR_PRF_ENABLE_REJIT |  
                                          COR_PRF_ENABLE_INPROC_DEBUGGING |  
                                          COR_PRF_ENABLE_JIT_MAPS |  
                                          COR_PRF_DISABLE_OPTIMIZATIONS |  
                                          COR_PRF_DISABLE_INLINING |  
                                          COR_PRF_ENABLE_OBJECT_ALLOCATED |  
                                          COR_PRF_ENABLE_FUNCTION_ARGS |  
                                          COR_PRF_ENABLE_FUNCTION_RETVAL |  
                                          COR_PRF_ENABLE_FRAME_INFO |  
                                          COR_PRF_USE_PROFILE_IMAGES |  
                     COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST |  
                                          COR_PRF_DISABLE_ALL_NGEN_IMAGES  
} COR_PRF_MONITOR;  

멤버

다음 섹션에는 범주별 COR_PRF_MONITOR 열거형 멤버가 나와 있습니다. 관련 범주는 다음과 같습니다.

플래그 설정 없음

멤버 Description
COR_PRF_MONITOR_NONE 플래그가 설정되지 않습니다.

콜백 플래그

멤버 Description
COR_PRF_MONITOR_ALL 모든 콜백 이벤트를 사용하도록 설정합니다.
COR_PRF_MONITOR_APPDOMAIN_LOADS ICorProfilerCallback 인터페이스에서 AppDomainCreation*AppDomainShutdown* 콜백을 제어합니다.
COR_PRF_MONITOR_ASSEMBLY_LOADS ICorProfilerCallback 인터페이스에서 AssemblyLoad*AssemblyUnload* 콜백을 제어합니다.
COR_PRF_MONITOR_CACHE_SEARCHES ICorProfilerCallback 인터페이스에서 JITCachedFunctionSearch* 콜백을 제어합니다.

이 플래그의 동작은 .NET Framework 버전 2.0에서 변경되었습니다.
COR_PRF_MONITOR_CCW ICorProfilerCallback 인터페이스에서 COMClassicVTable* 콜백을 제어합니다.
COR_PRF_MONITOR_CLASS_LOADS ICorProfilerCallback 인터페이스에서 ClassLoad*ClassUnload* 콜백을 제어합니다.
COR_PRF_MONITOR_CLR_EXCEPTIONS ICorProfilerCallback 인터페이스에서 ExceptionCLRCatcher* 콜백을 제어합니다.
COR_PRF_MONITOR_CODE_TRANSITIONS ICorProfilerCallback 인터페이스에서 UnmanagedToManagedTransitionManagedToUnmanagedTransition 콜백을 제어합니다.
COR_PRF_MONITOR_ENTERLEAVE FunctionEnter*, FunctionLeave*, 및 FunctionTailCall*프로파일링 전역 정적 함수를 제어합니다.
COR_PRF_MONITOR_EXCEPTIONS ICorProfilerCallback 인터페이스에서 ExceptionThrown 콜백과 ExceptionSearch*, ExceptionOSHandler*, ExceptionUnwind*ExceptionCatcher* 콜백을 제어합니다.
COR_PRF_MONITOR_FUNCTION_UNLOADS ICorProfilerCallback 인터페이스에서 FunctionUnloadStarted 콜백을 제어합니다.
COR_PRF_MONITOR_GC ICorProfilerCallback* 인터페이스에서 GarbageCollectionStarted, GarbageCollectionFinished, MovedReferences, MovedReferences2, SurvivingReferences, SurvivingReferences2, ObjectReferences, ObjectsAllocatedByClass, RootReferences, RootReferences2, HandleCreated, HandleDestroyedFinalizeableObjectQueued 콜백을 제어합니다. COR_PRF_MONITOR_GC가 할당되면 동시 가비지 수집이 해제됩니다.
COR_PRF_MONITOR_JIT_COMPILATION ICorProfilerCallback 인터페이스에서 JITCompilation*, JITFunctionPitchedJITInlining 콜백을 제어합니다.
COR_PRF_MONITOR_MODULE_LOADS ICorProfilerCallback 인터페이스에서 ModuleLoad*, ModuleUnload*, 및 ModuleAttachedToAssembly 콜백을 제어합니다.
COR_PRF_MONITOR_OBJECT_ALLOCATED ICorProfilerCallback 인터페이스에서 ObjectAllocated 콜백을 제어합니다.
COR_PRF_MONITOR_REMOTING ICorProfilerCallback 인터페이스에서 Remoting* 콜백을 제어합니다.
COR_PRF_MONITOR_REMOTING_ASYNC Remoting* 콜백이 비동기 이벤트를 모니터링하는지 여부를 제어합니다.
COR_PRF_MONITOR_REMOTING_COOKIE Remoting* 콜백으로 쿠키가 전달되는지 여부를 제어합니다.
COR_PRF_MONITOR_SUSPENDS ICorProfilerCallback 인터페이스에서 RuntimeSuspend*, RuntimeResume*, RuntimeThreadSuspendedRuntimeThreadResumed 콜백을 제어합니다.
COR_PRF_MONITOR_THREADS ICorProfilerCallbackICorProfilerCallback2 인터페이스에서 ThreadCreated, ThreadDestroyed, ThreadAssignedToOSThreadThreadNameChanged 콜백을 제어합니다.

기능 사용 플래그

멤버 Description
COR_PRF_ENABLE_FRAME_INFO FunctionEnter2 콜백에 의해 반환되는 COR_PRF_FRAME_INFO 값을 포함해 GetFunctionInfo2 메서드를 호출하여 제네릭 함수의 정확한 ClassID를 검색할 수 있도록 설정합니다.
COR_PRF_ENABLE_FUNCTION_ARGS FunctionEnter2 콜백 또는 FunctionEnter3WithInfo 콜백 및 GetFunctionEnter3Info 메서드를 사용하여 인수 추적을 사용하도록 설정합니다.
COR_PRF_ENABLE_FUNCTION_RETVAL FunctionLeave2 콜백 또는 FunctionLeave3WithInfo 콜백 및 GetFunctionLeave3Info 메서드를 사용하여 반환 값을 추적할 수 있습니다.
COR_PRF_ENABLE_INPROC_DEBUGGING 더 이상 사용되지 않습니다.

프로세스 내 디버깅은 지원되지 않습니다. 이 플래그는 아무런 영향을 주지 않습니다.
COR_PRF_ENABLE_JIT_MAPS 더 이상 사용되지 않습니다.

프로파일러가 GetILToNativeMapping을 사용하여 IL-네이티브 맵을 가져오도록 허용합니다. .NET Framework 2.0부터는 런타임이 항상 IL-네이티브 맵을 추적하므로 이 플래그는 항상 설정되어 있는 것으로 간주됩니다.
COR_PRF_ENABLE_OBJECT_ALLOCATED 프로파일러가 개체 할당 알림을 받고자 할 수 있음을 런타임에 알립니다. 이 플래그는 초기화 중에 설정해야 합니다. 그러면 프로파일러가 나중에 COR_PRF_MONITOR_OBJECT_ALLOCATED 플래그를 사용하여 ObjectAllocated 콜백을 받을 수 있습니다.
COR_PRF_ENABLE_REJIT RequestReJITRequestRevert 메서드를 호출할 수 있도록 설정합니다. 프로파일러는 시작 시 이 플래그를 설정해야 합니다. 프로파일러가 이 플래그를 지정하는 경우에는 COR_PRF_DISABLE_ALL_NGEN_IMAGES도 지정해야 합니다.
COR_PRF_ENABLE_STACK_SNAPSHOT DoStackSnapshot 메서드를 호출할 수 있도록 설정합니다.

구성 플래그

멤버 Description
COR_PRF_DISABLE_ALL_NGEN_IMAGES 프로파일러 향상 이미지를 비롯한 모든 네이티브 이미지의 로드를 차단합니다. 이 플래그와 COR_PRF_USE_PROFILE_IMAGES 플래그가 모두 지정되어 있으면 COR_PRF_DISABLE_ALL_NGEN_IMAGES가 사용됩니다.
COR_PRF_DISABLE_INLINING 모든 인라인 처리를 사용하지 않습니다.
COR_PRF_DISABLE_OPTIMIZATIONS 모든 코드 최적화를 사용하지 않습니다.
COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST 일반적으로는 완전 신뢰 어셈블리에 대해 JIT(Just-In-Time) 컴파일 및 클래스 로드 중에 수행되는 보안 투명도 확인을 사용하지 않습니다. 이 경우 일부 계측을 보다 쉽게 수행할 수 있습니다.
COR_PRF_USE_PROFILE_IMAGES 네이티브 이미지 검색에서 프로파일러 향상 이미지를 찾도록 지정합니다. 지정한 어셈블리의 프로파일러 향상 이미지가 없으면 공용 언어 런타임이 해당 어셈블리에 대해 JIT로 대체됩니다. 이 플래그와 COR_PRF_DISABLE_ALL_NGEN_IMAGES 플래그가 모두 지정되어 있으면 COR_PRF_DISABLE_ALL_NGEN_IMAGES가 사용됩니다.

복합 플래그

멤버 Description
COR_PRF_ALL 모든 COR_PRF_MONITOR 플래그 값을 나타냅니다.
COR_PRF_ALLOWABLE_AFTER_ATTACH 실행 중인 앱에 프로파일러를 연결한 후에 설정할 수 있는 모든 COR_PRF_MONITOR 플래그를 나타냅니다. 구문 섹션에는 이 비트 마스크에 있는 개별 플래그가 표시됩니다.
COR_PRF_MONITOR_ALL 모든 콜백 이벤트를 사용하도록 설정합니다.
COR_PRF_MONITOR_IMMUTABLE 초기화 중에만 설정할 수 있는 모든 COR_PRF_MONITOR 플래그를 나타냅니다. 초기화 후에 이러한 플래그를 변경하려고 하면 오류를 나타내는 HRESULT 값이 반환됩니다.
COR_PRF_REQUIRE_PROFILE_IMAGE 프로필 향상 이미지가 필요한 모든 COR_PRF_MONITOR 플래그를 나타냅니다.

설명

COR_PRF_MONITOR 값은 ICorProfilerInfo::GetEventMaskICorProfilerInfo::SetEventMask 메서드와 함께 공용 언어 런타임이 프로파일러에 제공하는 이벤트 알림을 정의하는 데 사용됩니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorProf.idl, CorProf.h

라이브러리: CorGuids.lib

.NET Framework 버전: 1.0부터 사용 가능

참고 항목