方法 ETW 事件
这些事件可收集特定于方法的信息。 符号解析需要这些事件的负载。 此外,这些事件还提供诸如方法的调用次数等有用信息。
所有方法事件的级别都为“信息性 (4)”级别。 所有方法详细事件的级别都为“详细 (5)”。
所有方法事件由运行时提供程序使用 JITKeyword (0x10) 关键字或 NGenKeyword (0x20) 关键字引发,或者由断开提供程序使用 JitRundownKeyword (0x10) 或 NGENRundownKeyword (0x20) 引发。
CLR 方法事件进一步细分为以下几类:
CLR 方法事件
CLR 方法标记事件
CLR 方法详细事件
MethodJittingStarted Event
CLR 方法事件
下表显示关键字和级别。 (有关更多信息,请参见 CLR ETW 关键字和级别。)
用于引发事件的关键字 |
级别 |
---|---|
JITKeyword (0x10) 运行时提供程序 |
信息性 (4) |
NGenKeyword (0x20) 运行时提供程序 |
信息性 (4) |
JitRundownKeyword (0x10) 断开提供程序 |
信息性 (4) |
NGENRundownKeyword (0x20) 断开提供程序 |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
MethodLoad_V1 |
136 |
在实时加载(通过 JIT 加载)方法或加载 NGEN 映像时引发。 动态方法和泛型方法不使用此版本来进行方法加载。 JIT 帮助器从不使用此版本。 |
MethodUnLoad_V1 |
137 |
在卸载模块或销毁应用程序域时引发。 动态方法从不使用此版本来进行方法卸载。 |
MethodDCStart_V1 |
137 |
在开始断开期间枚举方法。 |
MethodDCEnd_V1 |
138 |
在结束断开期间枚举方法。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
MethodID |
win:UInt64 |
方法的唯一标识符。 对于 JIT 帮助器方法,这设置为方法的起始地址。 |
ModuleID |
win:UInt64 |
此方法所属的模块的标识符(0 表示 JIT 帮助器)。 |
MethodStartAddress |
win:UInt64 |
方法的起始地址。 |
MethodSize |
win:UInt32 |
方法的大小。 |
MethodToken |
win:UInt32 |
0 用于动态方法和 JIT 帮助器。 |
MethodFlags |
win:UInt32 |
0x1: 动态方法。 0x2: 泛型方法。 0x4: JIT 编译的代码方法(否则为 NGEN 本机映像代码)。 0x8: 帮助器方法。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
返回页首
CLR 方法标记事件
只有断开提供程序才会引发这些事件。 这些事件表示开始或结束断开期间的方法枚举的结束。 (也就是说,这些事件在启用 NGENRundownKeyword、JitRundownKeyword、LoaderRundownKeyword 或 AppDomainResourceManagementRundownKeyword 关键字时引发。)
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
AppDomainResourceManagementRundownKeyword (0x800) 断开提供程序 |
信息性 (4) |
JitRundownKeyword (0x10) 断开提供程序 |
信息性 (4) |
NGENRundownKeyword (0x20) 断开提供程序 |
信息性 (4) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
DCStartInit_V1 |
147 |
在开始断开期间开始枚举之前发送。 |
DCStartComplete_V1 |
147 |
在开始断开期间结束枚举时发送。 |
DCEndInit_V1 |
145 |
在结束断开期间开始枚举之前发送。 |
DCEndComplete_V1 |
148 |
在结束断开期间结束枚举时发送。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
返回页首
CLR 方法详细事件
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
JITKeyword (0x10) 运行时提供程序 |
详细级别 (5) |
NGenKeyword (0x20) 运行时提供程序 |
详细级别 (5) |
JitRundownKeyword (0x10) 断开提供程序 |
详细级别 (5) |
NGENRundownKeyword (0x20) 断开提供程序 |
详细级别 (5) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
MethodLoadVerbose_V1 |
143 |
在通过 JIT 加载方法或加载 NGEN 映像时引发。 动态方法和泛型方法始终使用此版本来进行方法加载。 JIT 帮助器始终使用此版本。 |
MethodUnLoadVerbose_V1 |
144 |
在销毁动态方法、卸载模块或销毁应用程序域时引发。 动态方法始终使用此版本来进行方法卸载。 |
MethodDCStartVerbose_V1 |
141 |
在开始断开期间枚举方法。 |
MethodDCEndVerbose_V1 |
142 |
在结束断开期间枚举方法。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
MethodID |
win:UInt64 |
方法的唯一标识符。 对于 JIT 帮助器方法,设置为方法的起始地址。 |
ModuleID |
win:UInt64 |
此方法所属的模块的标识符(0 表示 JIT 帮助器)。 |
MethodStartAddress |
win:UInt64 |
起始地址。 |
MethodSize |
win:UInt32 |
方法长度。 |
MethodToken |
win:UInt32 |
0 用于动态方法和 JIT 帮助器。 |
MethodFlags |
win:UInt32 |
0x1: 动态方法。 0x2: 泛型方法。 0x4: JIT 编译的方法(否则由 NGen.exe 生成)。 0x8: 帮助器方法。 |
MethodNameSpace |
win:UnicodeString |
与方法关联的完整命名空间名称。 |
MethodName |
win:UnicodeString |
与方法关联的完整类名称。 |
MethodSignature |
win:UnicodeString |
方法的签名(以逗号分隔的类型名称列表)。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
返回页首
MethodJittingStarted Event
下表显示关键字和级别。
用于引发事件的关键字 |
级别 |
---|---|
JITKeyword (0x10) 运行时提供程序 |
详细级别 (5) |
NGenKeyword (0x20) 运行时提供程序 |
详细级别 (5) |
JitRundownKeyword (0x10) 断开提供程序 |
详细级别 (5) |
NGENRundownKeyword (0x20) 断开提供程序 |
详细级别 (5) |
下表显示事件信息。
Event |
事件 ID |
说明 |
---|---|---|
MethodJittingStarted |
145 |
在通过 JIT 编译方法时引发。 |
下表显示事件数据。
字段名 |
数据类型 |
说明 |
---|---|---|
MethodID |
win:UInt64 |
方法的唯一标识符。 |
ModuleID |
win:UInt64 |
此方法所属的模块的标识符。 |
MethodToken |
win:UInt32 |
0 用于动态方法和 JIT 帮助器。 |
MethodILSize |
win:UInt32 |
正在通过 JIT 编译的方法的 Microsoft 中间语言 (MSIL) 的大小。 |
MethodNameSpace |
win:UnicodeString |
与方法关联的完整类名称。 |
MethodName |
win:UnicodeString |
方法的名称。 |
MethodSignature |
win:UnicodeString |
方法的签名(以逗号分隔的类型名称列表)。 |
ClrInstanceID |
win:UInt16 |
CLR 或 CoreCLR 的实例的唯一 ID。 |
返回页首