方法 ETW 事件
这些事件收集特定于方法的信息。 符号解析需要这些事件的负载。 此外,这些事件还提供如调用方法的次数等有用信息。
所有方法事件都具有“信息性 (4)”级别。 所有方法的详细事件都具有“详细级别 (5)”级别。
所有方法事件都是由运行时提供程序下的 JITKeyword
(0x10) 关键字或 NGenKeyword
(0x20) 关键字引发的,或是由断开提供程序下的 JitRundownKeyword
(0x10) 或 NGENRundownKeyword
(0x20) 引发的。
CLR 方法事件
下表显示了关键字和级别。 有关详细信息,请参阅 CLR ETW 关键字和级别。
引发事件的关键字 | Level |
---|---|
JITKeyword (0x10) 运行时提供程序 |
信息性 (4) |
NGenKeyword (0x20) 运行时提供程序 |
信息性 (4) |
JitRundownKeyword (0x10) 断开提供程序 |
信息性 (4) |
NGENRundownKeyword (0x20) 断开提供程序 |
信息性 (4) |
下表显示了事件信息:
事件 | 事件 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
关键字时引发。)
下表显示了关键字和级别:
引发事件的关键字 | Level |
---|---|
AppDomainResourceManagementRundownKeyword (0x800) 断开提供程序 |
信息性 (4) |
JitRundownKeyword (0x10) 断开提供程序 |
信息性 (4) |
NGENRundownKeyword (0x20) 断开提供程序 |
信息性 (4) |
下表显示了事件信息:
事件 | 事件 ID | 说明 |
---|---|---|
DCStartInit_V1 |
147 | 启动断开期间枚举开始之前发送。 |
DCStartComplete_V1 |
145 | 启动断开期间枚举结束时发送。 |
DCEndInit_V1 |
148 | 结束断开期间枚举开始之前发送。 |
DCEndComplete_V1 |
146 | 结束断开期间枚举结束时发送。 |
下表显示了事件数据:
字段名 | 数据类型 | 说明 |
---|---|---|
ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 的实例的唯一 ID。 |
CLR 方法详细事件
下表显示了关键字和级别:
引发事件的关键字 | Level |
---|---|
JITKeyword (0x10) 运行时提供程序 |
详细级别 (5) |
NGenKeyword (0x20) 运行时提供程序 |
详细级别 (5) |
JitRundownKeyword (0x10) 断开提供程序 |
详细级别 (5) |
NGENRundownKeyword (0x20) 断开提供程序 |
详细级别 (5) |
下表显示了事件信息:
事件 | 事件 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 事件
下表显示了关键字和级别:
引发事件的关键字 | Level |
---|---|
JITKeyword (0x10) 运行时提供程序 |
详细级别 (5) |
NGenKeyword (0x20) 运行时提供程序 |
详细级别 (5) |
JitRundownKeyword (0x10) 断开提供程序 |
详细级别 (5) |
NGENRundownKeyword (0x20) 断开提供程序 |
详细级别 (5) |
下表显示了事件信息:
事件 | 事件 ID | 说明 |
---|---|---|
MethodJittingStarted |
145 | 在方法由 JIT 编译时引发。 |
下表显示了事件数据:
字段名 | 数据类型 | 说明 |
---|---|---|
MethodID | win:UInt64 | 方法的唯一标识符。 |
ModuleID | win:UInt64 | 此方法所属的模块标识符。 |
MethodToken | win:UInt32 | 0 代表动态方法和 JIT 帮助器。 |
MethodILSize | win:UInt32 | 正在编译 JIT 的方法的公共中间语言(CIL)的大小。 |
MethodNameSpace | win:UnicodeString | 与该方法关联的完整类名称。 |
MethodName | win:UnicodeString | 方法的名称。 |
MethodSignature | win:UnicodeString | 方法的签名(以逗号分隔的类型名称列表)。 |
ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 的实例的唯一 ID。 |