CLR ETW 關鍵字和層級

Windows 事件追蹤 (ETW) 的事件可依分類和層級篩選。 事件 CLR ETW 關鍵字 可以依分類啟用事件篩選;這些在執行階段和取消提供者時會加以組合使用。 事件層級 會標以旗標識別。

CLR ETW 關鍵字

關鍵字即為旗標,加以組合後可用以產生值。 在做法上,當您呼叫命令列公用程式時,是使用關鍵字的十六進位值,而不是關鍵字名稱。

下表是關鍵字的說明:

CLR ETW 執行階段關鍵字

下表列出 CLR ETW 執行階段關鍵字、其值及用途。

執行階段關鍵字名稱 目的
GCKeyword 0x00000001 啟用 記憶體回收事件收集。
LoaderKeyword 0x00000008 啟用 載入器事件收集。
JITKeyword 0x00000010 啟用 just-in-time (JIT) 事件收集。
NGenKeyword 0x00000020 啟用原生映像方法 (由原生映像產生器 Ngen.exe 處理) 的事件收集;這會與 StartEnumerationKeywordEndEnumerationKeyword搭配使用。 此關鍵字的額外負荷很高。 它會為所載入之每個 NGen 模組內的所有方法產生事件。 如有可能,建議您使用程式碼剖析工具產生的程式資料庫 (PDB),從 NGen 模組擷取方法的相關資訊,而不要使用此關鍵字。 另請參閱本表後文的 OverrideAndSuppressNGenEventsKeyword
StartEnumerationKeyword 0x00000040 啟用在執行階段期間列舉所有方法;這會與 NGenKeyword搭配使用。
EndEnumerationKeyword 0x00000080 啟用在執行階段期間列舉所有方法;這會與 JITKeywordNGenKeyword搭配使用。
SecurityKeyword 0x00000400 啟用 安全性事件收集。
AppDomainResourceManagementKeyword 0x00000800 啟用在應用程式網域層級之資源監視事件收集。
JITTracingKeyword 0x00001000 啟用 JIT 追蹤事件收集。
InteropKeyword 0x00002000 啟用 Interop 事件收集。
ContentionKeyword 0x00004000 啟用 爭用事件收集。
ExceptionKeyword 0x00008000 啟用 例外事件收集。
ThreadingKeyword 0x00010000 啟用 執行緒集區收集。
OverrideAndSuppressNGenEventsKeyword 0x00040000 (.NET Framework 4.5 和更新版本中可用。) 隱藏高額外負荷 NGenKeyword 關鍵字,並防止產生 NGen 模組內方法的事件。 從 .NET Framework 4.5 開始,分析工具應該使用 OverrideAndSuppressNGenEventsKeywordNGenKeyword 一起使用,以隱藏 NGen 模組中方法的事件產生。 這可以讓程式碼剖析工具更有效率地使用 NGen PDB,從而取得 NGen 模組中方法的相關資訊。 .NET Framework 4 與更舊版本中的 CLR 不支援 NGen PDB 建立。 在這些舊版本中,CLR 不會辨識 OverrideAndSuppressNGenEventsKeyword ,並會處理 NGenKeyword ,以為 NGen 模組中的方法產生事件。
PerfTrackKeyWord 0x2000000 啟用 ModuleLoadModuleRange 事件的收集。
StackKeyword 0x40000000 啟用 CLR 堆疊追蹤事件收集。

CLR ETW 取消關鍵字

下表列出 CLR ETW 執行階段關鍵字、其值及用途。

執行階段關鍵字名稱 目的
LoaderRundownKeyword 0x00000008 啟用 StartRundownKeywordEndRundownKeyword搭配使用時的載入器事件收集。
JitRundownKeyword 0x00000010 啟用 DCStartDCEnd 搭配使用時,方法 StartRundownKeyword 和 JIT 編譯之方法的 EndRundownKeyword事件收集。
NGenRundownKeyword 0x00000020 啟用 DCStartDCEnd 搭配使用時,方法 StartRundownKeyword 和 JIT 編譯之方法的 EndRundownKeyword事件收集。 此關鍵字的額外負荷很高。 它會為所載入之每個 NGen 模組內的所有方法產生事件。 如有可能,建議您使用程式碼剖析工具產生的程式資料庫 (PDB),從 NGen 模組擷取方法的相關資訊,而不要使用此關鍵字。 另請參閱本表後文的 OverrideAndSuppressNGenEventsRundownKeyword
StartRundownKeyword 0x00000040 啟用在開始取消期間的系統狀態列舉。
EndRundownKeyword 0x00000100 啟用在結束取消期間的系統狀態列舉。
AppDomainResourceManagementRundownKeyword 0x00000800 啟用 AppDomainStartRundownKeyword .搭配使用時, EndRundownKeyword層級的資源監控事件收集。
ThreadingKeyword 0x00010000 啟用執行緒集區事件收集。
OverrideAndSuppressNGenEventsRundownKeyword 0x00040000 (.NET Framework 4.5 和更新版本中可用。) 隱藏高額外負荷 NGenRundownKeyword 關鍵字,並防止產生 NGen 模組內方法的事件。 從 .NET Framework 4.5 開始,分析工具應該使用 OverrideAndSuppressNGenEventsRundownKeywordNGenRundownKeyword 一起使用,以隱藏 NGen 模組中方法的事件產生。 這可以讓程式碼剖析工具更有效率地使用 NGen PDB,從而取得 NGen 模組中方法的相關資訊。 .NET Framework 4 與更舊版本中的 CLR 不支援 NGen PDB 建立。 在這些舊版本中,CLR 不會辨識 OverrideAndSuppressNGenEventsRundownKeyword ,並會處理 NGenRundownKeyword ,以為 NGen 模組中的方法產生事件。
PerfTrackKeyWord 0x2000000 啟用 ModuleDCStartModuleDCEndModuleRangeDCStartModuleRangeDCEnd 事件的收集。

執行階段提供者之符號解析的關鍵字組合

關鍵字和旗標 應用程式網域、組件、模組載入/卸載事件 方法載入/卸載事件 (動態事件除外) 動態方法載入/終結事件
LoaderKeyword 載入和卸載事件。 無。 無。
JITKeyword

(+ StartEnumerationKeyword 不會加入任何項目)
無。 載入事件。 載入和卸載事件。
JITKeyword +

EndEnumerationKeyword
無。 載入和卸載事件。 載入和卸載事件。
NGenKeyword 無。 無。 不適用。
NGenKeyword +

StartEnumerationKeyword
無。 載入事件。 不適用。
NGenKeyword +

EndEnumerationKeyword
無。 載入事件。 不適用。

取消提供者之符號解析的關鍵字組合

關鍵字和旗標 應用程式網域、附屬組件、模組 DCStart/DCEnd 事件 方法 DCStart/DCEnd 事件 (包括動態方法事件)
LoaderRundownKeyword +

StartRundownKeyword
DCStart 事件。 無。
LoaderRundownKeyword +

EndRundownKeyword
DCEnd 事件。 無。
JITKeyword +

StartRundownKeyword
無。 DCStart 事件。
JITKeyword +

EndRundownKeyword
無。 DCEnd 事件。
NGenKeyword +

StartRundownKeyword
無。 DCStart 事件。
NGenKeyword +

EndRundownKeyword
無。 DCEnd 事件。

ETW 事件層級

ETW 事件也可以用層級篩選。 如果層級設定於 0x5,會引發 0x5 以下 (含) 的所有層級事件 (這些事件屬於透過鍵盤啟用的分類) 。 如果層級設定於 0x2,只會引發層級 0x2 以下 (含) 的事件。

層級具有下列意義:

0x5 - 詳細資訊

0x4 - 資訊

0x3 - 警告

0x2 - 錯誤

0x1 - 嚴重

0x0 - 永遠記錄

另請參閱