方法 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。

返回页首

请参见

概念

CLR ETW 事件