這些事件會收集與載入和卸除應用程式域、元件和模組相關的資訊。
所有的載入器事件都會在 LoaderKeyword (0x8) 關鍵字底下引發。 DCStart 和 DCEnd 事件會在啟用 StartRundown/EndRundown 時,於 LoaderRundownKeyword (0x8) 底下引發。 (如需詳細資訊,請參閱 CLR ETW Keywords and Levels)。
應用程式定義域事件
下表說明關鍵字和層級。
| 引發事件的關鍵字 | 活動 | 層級 |
|---|---|---|
LoaderKeyword (0x8) |
AppDomainLoad_V1 和 AppDomainUnLoad_V1 |
告知性 (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AppDomainDCStart_V1 |
告知性 (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AppDomainDCEnd_V1 |
告知性 (4) |
下表說明事件資訊。
| 活動 | 事件識別碼 | 描述 |
|---|---|---|
AppDomainLoad_V1 (針對所有應用程式定義域記錄) |
156 | 每當在處理序的存留期間建立應用程式定義域時引發。 |
AppDomainUnLoad_V1 |
157 | 每當在處理序的存留期間終結應用程式定義域時引發。 |
AppDomainDCStart_V1 |
157 | 在開始取消期間列舉應用程式定義域。 |
AppDomainDCEnd_V1 |
158 | 在結束取消期間列舉應用程式定義域。 |
下表說明事件資料。
| 欄位名稱 | 資料類型 | 描述 |
|---|---|---|
| AppDomainID | win:UInt64 | 應用程式定義域的唯一識別項。 |
| AppDomainFlags | win:UInt32 | 0x1:預設定義域。 0x2:可執行檔。 0x4:應用程式定義域,位元 28-31:這個定義域的共用原則。 0:共用的定義域。 |
| AppDomainName | win:UnicodeString | 易記的應用程式定義域名稱。 在處理序的存留期間可能會變更。 |
| AppDomainIndex | win:UInt32 | 這個應用程式定義域的索引。 |
| ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 執行個體的唯一 ID。 |
CLR 載入器組件事件
下表說明關鍵字和層級。
| 引發事件的關鍵字 | 活動 | 層級 |
|---|---|---|
LoaderKeyword (0x8) |
AssemblyLoad 和 AssemblyUnload |
告知性 (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AssemblyDCStart |
告知性 (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AssemblyDCEnd |
告知性 (4) |
下表說明事件資訊。
| 活動 | 事件識別碼 | 描述 |
|---|---|---|
AssemblyLoad_V1 |
154 | 載入組件時引發。 |
AssemblyUnload_V1 |
155 | 卸載組件時引發。 |
AssemblyDCStart_V1 |
155 | 在開始取消期間列舉組件。 |
AssemblyDCEnd_V1 |
156 | 在結束取消期間列舉組件。 |
下表說明事件資料。
| 欄位名稱 | 資料類型 | 描述 |
|---|---|---|
| AssemblyID | win:UInt64 | 組件的唯一 ID。 |
| AppDomainID | win:UInt64 | 這個組件之定義域的 ID。 |
| BindingID | win:UInt64 | 可唯一識別組件繫結的 ID。 |
| AssemblyFlags | win:UInt32 | 0x1:定義域中性組件。 0x2:動態組件。 0x4:組件具有原生映像。 0x8:可回收組件。 |
| AssemblyName | win:UnicodeString | 完整的組件名稱。 |
| ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 執行個體的唯一 ID。 |
模組事件
下表說明關鍵字和層級。
| 引發事件的關鍵字 | 活動 | 層級 |
|---|---|---|
LoaderKeyword (0x8) |
ModuleLoad_V2 和 ModuleUnload_V2 |
告知性 (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
ModuleDCStart_V2 |
告知性 (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
ModuleDCEnd_V2 |
告知性 (4) |
下表說明事件資訊。
| 活動 | 事件識別碼 | 描述 |
|---|---|---|
ModuleLoad_V2 |
152 | 在處理序的存留期間載入模組時引發。 |
ModuleUnload_V2 |
153 | 在處理序的存留期間卸載模組時引發。 |
ModuleDCStart_V2 |
153 | 在開始取消期間列舉模組。 |
ModuleDCEnd_V2 |
154 | 在結束取消期間列舉模組。 |
下表說明事件資料。
| 欄位名稱 | 資料類型 | 描述 |
|---|---|---|
| ModuleID | win:UInt64 | 模組的唯一 ID。 |
| AssemblyID | win:UInt64 | 這個模組所在之組件的 ID。 |
| ModuleFlags | win:UInt32 | 0x1:定義域中性模組。 0x2:模組具有原生映像。 0x4:動態模組。 0x8:資訊清單模組。 |
| Reserved1 | win:UInt32 | 保留的欄位。 |
| ModuleILPath | win:UnicodeString | 模組的通用中繼語言 (CIL) 映射路徑,如果它是動態元件,則為動態模組名稱(Null 終止)。 |
| ModuleNativePath | win:UnicodeString | 模組原生映像的路徑 (如果存在的話 (以 Null 終止))。 |
| ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 執行個體的唯一 ID。 |
| ManagedPdbSignature | win:GUID | 符合此模組的受管理程式資料庫 (PDB) 的 GUID 簽章。 (請參閱<備註>)。 |
| ManagedPdbAge | win:UInt32 | 寫入至受管理 PDB 並符合此模組的保留時間數值。 (請參閱<備註>)。 |
| ManagedPdbBuildPath | win:UnicodeString | 符合此模組之受管理 PDB 建立位置的目標路徑。 在某些情況下,這可能只是檔案名稱。 (請參閱<備註>)。 |
| NativePdbSignature | win:GUID | 符合此模組之原生映像產生器 (NGen) PDB 的 GUID 簽章 (如果有的話)。 (請參閱<備註>)。 |
| NativePdbAge | win:UInt32 | 寫入符合本模組之 NGen PDB 的的保留時間數值 (如果有的話)。 (請參閱<備註>)。 |
| NativePdbBuildPath | win:UnicodeString | 符合此模組之 NGen PDB 建立位置的目標路徑。 在某些情況下,這可能只是檔案名稱。 (請參閱<備註>)。 |
備註
名稱中擁有 "Pdb" 的欄位可供程式碼剖析工具使用,以找出與剖析工作階段時載入之模組相符的 PDB。 這些欄位的值對應於寫入模組中 IMAGE_DIRECTORY_ENTRY_DEBUG 區段的資料,且通常用於偵錯工具以協助尋找符合已載入模組的 PDB。
以 「ManagedPdb」 開頭的功能變數名稱是指與 Managed 編譯程式所產生的 CIL 模組對應的 Managed PDB(例如 C# 或 Visual Basic 編譯程式)。 此 PDB 會使用 Managed PDB 格式,並描述原始 Managed 原始程式碼中的專案,例如檔案、行號和符號名稱,如何對應至編譯至 CIL 模組的 CIL 元素。
以 "NativePdb" 開頭的欄位名稱表示該 NGen PDB 是透過呼叫
NGEN createPDB而產生。 這個 PDB 會使用受管理的 PDB 格式,並描述各個項目如何從原始的受管理來源程式碼 (例如檔案、行號和符號名稱) 對應至編譯成 NGen 模組的原生項目。
CLR 定義域模組事件
下表說明關鍵字和層級。
| 引發事件的關鍵字 | 活動 | 層級 |
|---|---|---|
LoaderKeyword (0x8) |
DomainModuleLoad_V1 |
告知性 (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
DomainModuleDCStart_V1 |
告知性 (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
DomainModuleDCEnd_V1 |
告知性 (4) |
下表說明事件資訊。
| 活動 | 事件識別碼 | 描述 |
|---|---|---|
DomainModuleLoad_V1 |
151 | 針對應用程式定義域載入模組時引發。 |
DomainModuleDCStart_V1 |
151 | 在開始取消期間列舉針對應用程式定義域所載入的模組,並且針對所有應用程式定義域記錄。 |
DomainModuleDCEnd_V1 |
152 | 在結束取消期間列舉針對應用程式定義域所載入的模組,並且針對所有應用程式定義域記錄。 |
下表說明事件資料。
| 欄位名稱 | 資料類型 | 描述 |
|---|---|---|
| ModuleID | win:UInt64 | 識別這個模組所屬的組件。 |
| AssemblyID | win:UInt64 | 這個模組所在之組件的 ID。 |
| AppDomainID | win:UInt64 | 使用這個模組之應用程式定義域的 ID。 |
| ModuleFlags | win:UInt32 | 0x1:定義域中性模組。 0x2:模組具有原生映像。 0x4:動態模組。 0x8:資訊清單模組。 |
| Reserved1 | win:UInt32 | 保留的欄位。 |
| ModuleILPath | win:UnicodeString | 模組的 CIL 映射路徑,如果它是動態元件,則為動態模組名稱(Null 終止)。 |
| ModuleNativePath | win:UnicodeString | 模組原生映像的路徑 (如果存在的話 (以 Null 終止))。 |
| ClrInstanceID | win:UInt16 | CLR 或 CoreCLR 執行個體的唯一 ID。 |
模組範圍事件
下表說明關鍵字和層級。
| 引發事件的關鍵字 | 活動 | 層級 |
|---|---|---|
PerfTrackKeyWord) |
ModuleRange |
告知性 (4) |
PerfTrackKeyWord |
ModuleRangeDCStart |
告知性 (4) |
PerfTrackKeyWord |
ModuleRangeDCEnd |
告知性 (4) |
下表說明事件資訊。
| 活動 | 事件識別碼 | 描述 |
|---|---|---|
ModuleRange |
158 | 如果已載入的原生映像產生器 (NGen) 已使用 IBC 最佳化,就會出現這個事件,其中包含有關 NGen 映像作用範圍的資訊。 |
ModuleRangeDCStart |
160 | 在開始取消期間引發的 ModuleRange 事件。 |
ModuleRangeDCEnd |
161 | 在結束取消期間引發的 ModuleRange 事件。 |
下表說明事件資料。
| 欄位名稱 | 資料類型 | 描述 |
|---|---|---|
| ClrInstanceID | win:UInt16 | 載入 CLR 的多個執行個體時,可在處理序中唯一識別 CLR 的特定執行個體。 |
| ModuleID | win:UInt64 | 識別這個模組所屬的組件。 |
| RangeBegin | win:UInt32 | 模組中的位移,表示指定範圍類別的起始範圍。 |
| RangeSize | win:UInt32 | 指定範圍的大小 (以位元組為單位)。 |
| RangeType | win:UInt32 | 單一值 0x4,用來代表非作用 IBC 範圍。 此欄位在未來可以代表更多值。 |
| RangeSize1 | win:UInt32 | 0 表示不正確的資料。 |
| RangeBegin2 | win:UnicodeString |
備註
如果 .NET Framework 處理序中載入的 NGen 影像已使用 IBC 最佳化,則包含 NGen 影像中作用範圍的 ModuleRange 事件會與其 moduleID 和 ClrInstanceID一起記錄。 如果 NGen 影像未經過 IBC 最佳化,則不會記錄這個事件。 若要判斷模組名稱,這個事件必須以模組載入 ETW 事件定序。
這個事件的承載大小是可變的, Count 欄位會指出事件中包含的範圍位移數。 這個事件必須以 Windows IStart 事件定序,以便判斷實際範圍。 每當載入影像時,就會記錄 Windows 影像載入事件,並且包含所載入影像的虛擬位址。
模組範圍事件會在任何 ETW 層級大於或等於 4 且分類為告知性事件時引發。