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
枚举成员。 这些类别包括:
未设置标志
成员 | 说明 |
---|---|
COR_PRF_MONITOR_NONE |
不设置任何标志。 |
回调标志
成员 | 说明 |
---|---|
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 接口中的 UnmanagedToManagedTransition 和 ManagedToUnmanagedTransition 回调 |
COR_PRF_MONITOR_ENTERLEAVE |
控制 FunctionEnter* 、FunctionLeave* 和 FunctionTailCall* 分析全局静态函数。 |
COR_PRF_MONITOR_EXCEPTIONS |
控制 ExceptionThrown 回调以及 ICorProfilerCallback 接口中的 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、HandleDestroyed 和 FinalizeableObjectQueued 回调。 分配 COR_PRF_MONITOR_GC 时,并发垃圾回收将关闭。 |
COR_PRF_MONITOR_JIT_COMPILATION |
控制 ICorProfilerCallback 接口中的 JITCompilation* 、JITFunctionPitched 和 JITInlining 回调。 |
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* 回调传递 Cookie。 |
COR_PRF_MONITOR_SUSPENDS |
控制 ICorProfilerCallback 接口中的RuntimeSuspend* 、RuntimeResume* 、RuntimeThreadSuspended 和 RuntimeThreadResumed 回调。 |
COR_PRF_MONITOR_THREADS |
控制 ICorProfilerCallback 和 ICorProfilerCallback2 接口中的 ThreadCreated、ThreadDestroyed、ThreadAssignedToOSThread 和 ThreadNameChanged 回调。 |
功能启用标志
成员 | 说明 |
---|---|
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 |
启用对 RequestReJIT 和 RequestRevert 方法的调用。 探查器必须在启动时设置此标志。 如果探查器指定此标志,它还必须指定 COR_PRF_DISABLE_ALL_NGEN_IMAGES 。 |
COR_PRF_ENABLE_STACK_SNAPSHOT |
启用对 DoStackSnapshot 方法的调用。 |
配置标志
成员 | 说明 |
---|---|
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) 编译和完全信任程序集类加载过程中完成的安全透明度检查。 这可以使某些检测更容易执行。 |
COR_PRF_USE_PROFILE_IMAGES |
导致执行本机映像搜索,以查找增强型探查器映像。 对于给定程序集,如果找不到增强型探查器映像,则公共语言运行时将回退到该程序集的 JIT。 如果此标志和 COR_PRF_DISABLE_ALL_NGEN_IMAGES 标志都已指定,将使用 COR_PRF_DISABLE_ALL_NGEN_IMAGES 。 |
复合标志
成员 | 说明 |
---|---|
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::GetEventMask 方法和 ICorProfilerInfo::SetEventMask 方法结合使用,以定义公共语言运行时向探查器发出的事件通知。
要求
平台:请参阅系统要求。
头文件: CorProf.idl、CorProf.h
库:CorGuids.lib
.NET Framework 版本:自 1.0 起可用