.NET 運行時間方法事件
本文所述的事件會收集方法特有的資訊。 符號解析需要這些事件的承載。 此外,這些事件會提供有用的資訊,例如載入和卸除的方法。 如需如何針對診斷目的使用這些事件的詳細資訊,請參閱 記錄和追蹤 .NET 應用程式。
所有方法事件都有一個層級的「資訊」(4)。 所有方法詳細資訊事件都有「詳細資訊(5)」層級。
所有方法事件都是由運行時間提供者下的 JITKeyword
(0x10) 關鍵詞或運行時間提供者下的 NGenKeyword
(0x20) 關鍵詞或 JitRundownKeyword
(0x10) 或 NGENRundownKeyword
(0x20) 引發。
這些事件的 V2 版本包括 ReJITID,V1 版本不會。
MethodLoad_V1 事件
下表顯示事件資訊:
事件 |
事件標識碼 |
描述 |
MethodLoad_V1 |
141 |
當方法載入 Just-In-Time 時引發 (JIT 載入)或載入 NGEN 映射時。 動態和泛型方法不會將此版本用於方法載入。 JIT 協助程序永遠不會使用此版本。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) 執行時間提供者 |
資訊 (4) |
NGenKeyword (0x20) 執行時間提供者 |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 針對 JIT 協助程式方法,這會設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
MethodStartAddress |
win:UInt64 |
方法的起始位址。 |
MethodSize |
win:UInt32 |
方法的大小。 |
MethodToken |
win:UInt32 |
0 適用於動態方法和 JIT 協助程式。 |
MethodFlags |
win:UInt32 |
0x1:動態方法。
0x2:泛型方法。
0x4:JIT 編譯的程式代碼方法(否則為 NGEN 原生映射碼)。
0x8:協助程式方法。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodLoad_V2事件
事件 |
事件標識碼 |
描述 |
MethodLoad_V2 |
141 |
當方法載入 Just-In-Time 時引發 (JIT 載入)或載入 NGEN 映射時。 動態和泛型方法不會將此版本用於方法載入。 JIT 協助程序永遠不會使用此版本。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) 執行時間提供者 |
資訊 (4) |
NGenKeyword (0x20) 執行時間提供者 |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 針對 JIT 協助程式方法,這會設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
MethodStartAddress |
win:UInt64 |
方法的起始位址。 |
MethodSize |
win:UInt32 |
方法的大小。 |
MethodToken |
win:UInt32 |
0 適用於動態方法和 JIT 協助程式。 |
MethodFlags |
win:UInt32 |
0x1:動態方法。
0x2:泛型方法。
0x4:JIT 編譯的程式代碼方法(否則為 NGEN 原生映射碼)。
0x8:協助程式方法。 |
ReJITID |
win:UInt64 |
方法的 ReJIT 識別碼。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodUnLoad_V1 事件
事件 |
事件標識碼 |
描述 |
MethodUnLoad_V1 |
142 |
卸除模組或終結應用程式域時引發。 動態方法永遠不會將此版本用於方法卸除。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 針對 JIT 協助程式方法,這會設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
MethodStartAddress |
win:UInt64 |
方法的起始位址。 |
MethodSize |
win:UInt32 |
方法的大小。 |
MethodToken |
win:UInt32 |
0 適用於動態方法和 JIT 協助程式。 |
MethodFlags |
win:UInt32 |
0x1:動態方法。
0x2:泛型方法。
0x4:JIT 編譯的程式代碼方法(否則為 NGEN 原生映射碼)。
0x8:協助程式方法。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodUnLoad_V2 事件
事件 |
事件標識碼 |
描述 |
MethodUnLoad_V2 |
142 |
卸除模組或終結應用程式域時引發。 動態方法永遠不會將此版本用於方法卸除。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 針對 JIT 協助程式方法,這會設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
MethodStartAddress |
win:UInt64 |
方法的起始位址。 |
MethodSize |
win:UInt32 |
方法的大小。 |
MethodToken |
win:UInt32 |
0 適用於動態方法和 JIT 協助程式。 |
MethodFlags |
win:UInt32 |
0x1:動態方法。
0x2:泛型方法。
0x4:JIT 編譯的程式代碼方法(否則為 NGEN 原生映射碼)。
0x8:協助程式方法。 |
ReJITID |
win:UInt64 |
方法的 ReJIT 識別碼。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
R2RGetEntryPoint 事件
事件 |
事件標識碼 |
描述 |
R2RGetEntryPoint |
159 |
R2R 進入點查閱結束時引發。 |
引發事件的關鍵詞 |
水準 |
CompilationDiagnosticKeyword (0x2000000000) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
R2R 方法的唯一標識碼。 |
MethodNamespace |
win:UnicodeString |
要查閱之方法的命名空間。 |
MethodName |
win:UnicodeString |
要查閱之方法的名稱。 |
MethodSignature |
win:UnicodeString |
方法的簽章(類型名稱的逗號分隔清單)。 |
EntryPoint |
win:UInt64 |
R2R 方法進入點的指標 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
R2RGetEntryPointStart 事件
事件 |
事件標識碼 |
描述 |
R2RGetEntryPointStart |
160 |
R2R 進入點查閱開始時引發。 |
引發事件的關鍵詞 |
水準 |
CompilationDiagnosticKeyword (0x2000000000) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
R2R 方法的唯一標識碼。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodLoadVerbose_V1 事件
事件 |
事件標識碼 |
描述 |
MethodLoadVerbose_V1 |
143 |
當方法載入 JIT 或載入 NGEN 映像時引發。 動態和泛型方法一律將此版本用於方法載入。 JIT 協助程式一律使用此版本。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 若為 JIT 協助程式方法,請將 設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
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 |
CoreCLR 實例的唯一標識符。 |
MethodLoadVerbose_V2 事件
事件 |
事件標識碼 |
描述 |
MethodLoadVerbose_V1 |
143 |
當方法載入 JIT 或載入 NGEN 映像時引發。 動態和泛型方法一律將此版本用於方法載入。 JIT 協助程式一律使用此版本。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 若為 JIT 協助程式方法,請將 設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
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 |
方法的簽章(類型名稱的逗號分隔清單)。 |
ReJITID |
win:UInt64 |
方法的 ReJIT 識別碼。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodUnLoadVerbose_V1事件
事件 |
事件標識碼 |
描述 |
MethodUnLoadVerbose_V1 |
144 |
在終結動態方法、卸除模組或終結應用程式域時引發。 動態方法一律將此版本用於方法卸除。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 若為 JIT 協助程式方法,請將 設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
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 |
CoreCLR 實例的唯一標識符。 |
MethodUnLoadVerbose_V2 事件
事件 |
事件標識碼 |
描述 |
MethodUnLoadVerbose_V2 |
144 |
在終結動態方法、卸除模組或終結應用程式域時引發。 動態方法一律將此版本用於方法卸除。 |
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
資訊 (4) |
NGenKeyword (0x20) |
資訊 (4) |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 若為 JIT 協助程式方法,請將 設定為 方法的起始位址。 |
ModuleID |
win:UInt64 |
這個方法所屬模組的標識碼(JIT 協助程式為 0)。 |
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 |
CoreCLR 實例的唯一標識符。 |
ReJITID |
win:UInt64 |
方法的 ReJIT 識別碼。 |
MethodJittingStarted_V1事件
下表顯示 關鍵字和層級:
引發事件的關鍵詞 |
水準 |
JITKeyword (0x10) |
詳細資訊 (5) |
NGenKeyword (0x20) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodJittingStarted_V1 |
145 |
當方法正在 JIT 編譯時引發。 |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 |
ModuleID |
win:UInt64 |
這個方法所屬之模組的標識碼。 |
MethodToken |
win:UInt32 |
0 適用於動態方法和 JIT 協助程式。 |
MethodILSize |
win:UInt32 |
要編譯 JIT 之方法的 Common Intermediate Language (CIL) 大小。 |
MethodNameSpace |
win:UnicodeString |
與方法相關聯的完整類別名稱。 |
MethodName |
win:UnicodeString |
方法的名稱。 |
MethodSignature |
win:UnicodeString |
方法的簽章(類型名稱的逗號分隔清單)。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodJitInliningSucceeded 事件
引發事件的關鍵詞 |
水準 |
JITTracingKeyword (0x1000) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodJitInliningSucceeded |
185 |
當 JIT 編譯程式成功內嵌方法時引發。 |
功能變數名稱 |
數據類型 |
描述 |
MethodBeingCompiledNamespace |
win:UnicodeString |
正在編譯之方法的命名空間。 |
MethodBeingCompiledName |
win:UnicodeString |
正在編譯之方法的名稱。 |
MethodBeingCompiledNameSignature |
win:UnicodeString |
正在編譯的方法簽章(型別名稱的逗號分隔清單)。 |
InlinerNamespace |
win:UnicodeString |
內嵌器 (“parent”) 方法的命名空間。 |
InlinerName |
win:UnicodeString |
內嵌器 (“parent”) 方法的名稱。 |
InlinerNameSignature |
win:UnicodeString |
內嵌器 (“parent”) 方法的簽章(類型名稱的逗號分隔清單)。 |
InlineeNamespace |
win:UnicodeString |
inlinee (“child”) 方法的命名空間。 |
InlineeName |
win:UnicodeString |
內嵌方法的名稱(“child”) 方法。 |
InlineeNameSignature |
win:UnicodeString |
內嵌方法 (“child”) 方法的簽章(類型名稱的逗號分隔清單)。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodJitInliningFailed 事件
引發事件的關鍵詞 |
水準 |
JITTracingKeyword (0x1000) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodJitInliningFailed |
192 |
當 JIT 編譯程式無法內嵌方法時引發。 |
功能變數名稱 |
數據類型 |
描述 |
MethodBeingCompiledNamespace |
win:UnicodeString |
正在編譯之方法的命名空間。 |
MethodBeingCompiledName |
win:UnicodeString |
正在編譯之方法的名稱。 |
MethodBeingCompiledNameSignature |
win:UnicodeString |
正在編譯的方法簽章(型別名稱的逗號分隔清單)。 |
InlinerNamespace |
win:UnicodeString |
內嵌器 (“parent”) 方法的命名空間。 |
InlinerName |
win:UnicodeString |
內嵌器 (“parent”) 方法的名稱。 |
InlinerNameSignature |
win:UnicodeString |
內嵌器 (“parent”) 方法的簽章(類型名稱的逗號分隔清單)。 |
InlineeNamespace |
win:UnicodeString |
inlinee (“child”) 方法的命名空間。 |
InlineeName |
win:UnicodeString |
內嵌方法的名稱(“child”) 方法。 |
InlineeNameSignature |
win:UnicodeString |
內嵌方法 (“child”) 方法的簽章(類型名稱的逗號分隔清單)。 |
FailAlways |
win:Boolean |
方法是否標示為不可內嵌。 |
FailReason |
win:UnicodeString |
內嵌原因失敗。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodJitTailCallSucceeded 事件
引發事件的關鍵詞 |
水準 |
JITTracingKeyword (0x1000) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodJitTailCallSucceeded |
192 |
當方法成功呼叫時,JIT 編譯程式就會引發。 |
功能變數名稱 |
數據類型 |
描述 |
MethodBeingCompiledNamespace |
win:UnicodeString |
正在編譯之方法的命名空間。 |
MethodBeingCompiledName |
win:UnicodeString |
正在編譯之方法的名稱。 |
MethodBeingCompiledNameSignature |
win:UnicodeString |
正在編譯的方法簽章(型別名稱的逗號分隔清單)。 |
CallerNamespace |
win:UnicodeString |
呼叫端方法的命名空間。 |
CallerName |
win:UnicodeString |
呼叫端方法的名稱。 |
CallerNameSignature |
win:UnicodeString |
呼叫端方法的簽章(類型名稱的逗號分隔清單)。 |
CalleeNamespace |
win:UnicodeString |
被呼叫端方法的命名空間。 |
CalleeName |
win:UnicodeString |
被呼叫端方法的名稱。 |
CalleeNameSignature |
win:UnicodeString |
被呼叫端方法的簽章(類型名稱的逗號分隔清單)。 |
TailPrefix |
win:Boolean |
它是否為尾前置詞指令。 |
TailCallType |
win:UInt32 |
尾端呼叫的類型。
0:優化尾部呼叫 (epilog + jmp)
1:遞迴尾呼叫(方法 tail 呼叫本身)
2:協助程式輔助尾端呼叫 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodJitTailCallFailed 事件
引發事件的關鍵詞 |
水準 |
JITTracingKeyword (0x1000) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodJitTailCallFailed |
191 |
當呼叫方法失敗時,JIT 編譯程序引發。 |
功能變數名稱 |
數據類型 |
描述 |
MethodBeingCompiledNamespace |
win:UnicodeString |
正在編譯之方法的命名空間。 |
MethodBeingCompiledName |
win:UnicodeString |
正在編譯之方法的名稱。 |
MethodBeingCompiledNameSignature |
win:UnicodeString |
正在編譯的方法簽章(型別名稱的逗號分隔清單)。 |
CallerNamespace |
win:UnicodeString |
呼叫端方法的命名空間。 |
CallerName |
win:UnicodeString |
呼叫端方法的名稱。 |
CallerNameSignature |
win:UnicodeString |
呼叫端方法的簽章(類型名稱的逗號分隔清單)。 |
CalleeNamespace |
win:UnicodeString |
被呼叫端方法的命名空間。 |
CalleeName |
win:UnicodeString |
被呼叫端方法的名稱。 |
CalleeNameSignature |
win:UnicodeString |
被呼叫端方法的簽章(類型名稱的逗號分隔清單)。 |
TailPrefix |
win:Boolean |
它是否為尾前置詞指令。 |
FailReason |
win:UnicodeString |
尾端呼叫失敗的原因。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |
MethodILToNativeMap 事件
引發事件的關鍵詞 |
水準 |
JittedMethodILToNativeMapKeyword (0x20000) |
詳細資訊 (5) |
事件 |
事件標識碼 |
描述 |
MethodILToNativeMap |
190 |
對應 JIT 編譯方法的 IL 到原生對應事件。 |
功能變數名稱 |
數據類型 |
描述 |
MethodID |
win:UInt64 |
方法的唯一標識碼。 |
ReJITID |
win:UInt64 |
方法的 ReJIT 識別碼。 |
MethodExtent |
win:UInt8 |
jitted 方法的範圍。 |
CountOfMapEntries |
win:UInt16 |
對應項目數目 |
ILOffsets |
win:UInt32 |
IL 位移。 |
NativeOffsets |
win:UInt32 |
機器碼位移。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 實例的唯一標識符。 |