JIT 跟踪 ETW 事件
这些事件可收集有关实时 (JIT) 内联和 JIT 尾调用成功或失败的信息。
JIT 内联事件
MethodJitInliningFailed 事件
下表显示了关键字和级别。 (有关详细信息,请参阅 CLR ETW Keywords and Levels。)
引发事件的关键字 | Level |
---|---|
JITTracingKeyword (0x10) |
详细级别 (5) |
下表显示了事件信息。
事件 | 事件 ID | 在发生以下情况时引发 |
---|---|---|
MethodJitInliningFailed |
186 | JIT 内联失败。 |
下表显示了事件数据。
字段名 | 数据类型 | 说明 |
---|---|---|
MethodBeingCompiledNamespace | win:UnicodeString | 正在编译的方法的命名空间。 |
MethodBeingCompiledName | win:UnicodeString | 正在编译的方法的名称。 |
MethodBeingCompiledNameSignature | win:UnicodeString | 正在编译的方法的签名。 |
InlinerNamespace | win:UnicodeString | JIT 编译器正在尝试为其生成代码的方法的命名空间。 |
InlinerName | win:UnicodeString | 编译器正在尝试为其生成代码的方法的名称。 如果编译器正在尝试将代码内联到 MethodBeingCompiledName ,而不是生成对 MethodBeingCompiledName 的调用,则此名称可能会与 InlinerName 不相同。 |
InlinerNameSignature | win:UnicodeString | 内联方的签名。 |
InlineeNamespace | win:UnicodeString | 被内联方的命名空间。 |
InlineeName | win:UnicodeString | 编译器正在尝试内联的方法(不生成对此方法的调用)。 |
InlineeNameSignature | win:UnicodeString | 被内联方的签名。 |
FailAlways | win:Boolean | 提示 JIT 编译器针对被内联方的内联操作将始终失败。 |
FailReason | win:UnicodeString | INLINE_NEVER 表示前一个内联尝试确定了内联操作因某些其他原因将永远不会成功;否则为任意形式的文本。 |
ClrInstanceID | win:UnicodeString | CLR 或 CoreCLR 的实例的唯一 ID。 |
MethodJitInliningSucceeded 事件
下表显示了关键字和级别。
引发事件的关键字 | Level |
---|---|
JITTracingKeyword (0x10) |
详细级别 (5) |
下表显示了事件信息。
事件 | 事件 ID | 在发生以下情况时引发 |
---|---|---|
MethodJitInliningSucceeded |
185 | 方法内联成功。 |
下表显示了事件数据。
字段名 | 数据类型 | 说明 |
---|---|---|
MethodBeingCompiledNamespace | win:UnicodeString | 正在编译的方法的命名空间。 |
MethodBeingCompiledName | win:UnicodeString | 正在编译的方法的名称。 |
MethodBeingCompiledNameSignature | win:UnicodeString | 正在编译的方法的签名。 |
InlinerNamespace | win:UnicodeString | JIT 编译器正在尝试为其生成代码的方法的命名空间。 |
InlinerName | win:UnicodeString | 编译器正在尝试为其生成代码的方法的名称。 如果编译器正在尝试将代码内联到 MethodBeingCompiledName ,而不是生成对 MethodBeingCompiledName 的调用,则此名称可能会与 InlinerName 不相同。 |
InlinerNameSignature | win:UnicodeString | 内联方的签名。 |
InlineeNamespace | win:UnicodeString | 被内联方的命名空间。 |
InlineeName | win:UnicodeString | 编译器正在尝试内联的方法(不生成对此方法的调用)。 |
InlineeNameSignature | win:UnicodeString | 被内联方的签名。 |
ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 的实例的唯一 ID。 |
JIT 尾调用事件
MethodJITTailCallFailed 事件
下表显示了关键字和级别。
引发事件的关键字 | Level |
---|---|
JITTracingKeyword (0x10) |
详细级别 (5) |
下表显示了事件信息。
事件 | 事件 ID | 在发生以下情况时引发 |
---|---|---|
MethodJitTailCallFailed |
189 | 方法尾调用失败。 |
下表显示了事件数据。
字段名 | 数据类型 | 说明 |
---|---|---|
MethodBeingCompiledNamespace | win:UnicodeString | 正在编译的方法的命名空间。 |
MethodBeingCompiledName | win:UnicodeString | 正在编译的方法的名称。 |
MethodBeingCompiledNameSignature | win:UnicodeString | 正在编译的方法的签名。 |
CallerNamespace | win:UnicodeString | JIT 编译器正在尝试为其生成代码的方法的命名空间。 |
CallerName | win:UnicodeString | 编译器正在尝试为其生成代码的方法的名称。 |
CallerNameSignature | win:UnicodeString | 调用方的签名。 |
CalleeNamespace | win:UnicodeString | 被调用方的命名空间。 |
CalleeName | win:UnicodeString | 编译器正在尝试尾调用的方法(不生成对此方法的调用)。 |
CalleeNameSignature | win:UnicodeString | 被调用方的签名。 |
TailPrefix | win:Boolean | 尾调用的前缀 |
FailReason | win:UnicodeString | 尾调用失败的原因。 |
ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 的实例的唯一 ID。 |
MethodJITTailCallSucceeded 事件
下表显示了关键字和级别。
引发事件的关键字 | Level |
---|---|
JITTracingKeyword (0x10) |
详细级别 (5) |
下表显示了事件信息。
事件 | 事件 ID | 在发生以下情况时引发 |
---|---|---|
MethodJitTailCallSucceeded |
188 | 方法尾调用成功。 |
下表显示了事件数据。
字段名 | 数据类型 | 说明 |
---|---|---|
MethodBeingCompiledNamespace | win:UnicodeString | 正在编译的方法的命名空间。 |
MethodBeingCompiledName | win:UnicodeString | 正在编译的方法的名称。 |
MethodBeingCompiledNameSignature | win:UnicodeString | 正在编译的方法的签名。 |
CallerNamespace | win:UnicodeString | JIT 编译器正在尝试为其生成代码的方法的命名空间。 |
CallerName | win:UnicodeString | 编译器正在尝试为其生成代码的方法的名称。 |
CallerNameSignature | win:UnicodeString | 调用方的签名。 |
CalleeNamespace | win:UnicodeString | 被调用方的命名空间。 |
CalleeName | win:UnicodeString | 编译器正在尝试尾调用的方法(不生成对此方法的调用)。 |
CalleeNameSignature | win:UnicodeString | 被调用方的签名。 |
TailPrefix | win:Boolean | 尾调用的前缀。 |
TailCallType | win:UnicodeString | 尾调用的类型。 |
ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 的实例的唯一 ID。 |