ETW-Ladeprogrammereignisse
In diesen Ereignissen werden Informationen zum Laden und Entladen von Anwendungsdomänen, Assemblys und Modulen erfasst.
Alle Ladeprogrammereignisse werden unter dem LoaderKeyword
(0x8)-Schlüsselwort ausgelöst. Das DCStart
-Ereignis und das DCEnd
-Ereignis werden unter LoaderRundownKeyword
(0x8) ausgelöst, wobei StartRundown
/EndRundown
aktiviert ist. (Weitere Informationen finden Sie unter CLR ETW Keywords and Levels.)
Anwendungsdomänenereignisse
Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an.
Schlüsselwort zum Auslösen des Ereignisses | Ereignis | Ebene |
---|---|---|
LoaderKeyword (0 x 8) |
AppDomainLoad_V1 und AppDomainUnLoad_V1 |
Information (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AppDomainDCStart_V1 |
Information (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AppDomainDCEnd_V1 |
Information (4) |
Die folgende Tabelle zeigt die Ereignisinformationen an.
Ereignis | Ereignis-ID | BESCHREIBUNG |
---|---|---|
AppDomainLoad_V1 (protokolliert für alle Anwendungsdomänen) |
156 | Wird ausgelöst, wenn eine Anwendungsdomäne während der Lebensdauer eines Prozesses erstellt wird. |
AppDomainUnLoad_V1 |
157 | Wird ausgelöst, wenn eine Anwendungsdomäne während der Lebensdauer eines Prozesses zerstört wird. |
AppDomainDCStart_V1 |
157 | Listet während eines Startrundowns die Anwendungsdomänen auf. |
AppDomainDCEnd_V1 |
158 | Listet während eines Endrundowns die Anwendungsdomänen auf. |
Die folgende Tabelle zeigt die Ereignisdaten an.
Feldname | Datentyp | Beschreibung |
---|---|---|
AppDomainID | win:UInt64 | Der eindeutige Bezeichner für eine Anwendungsdomäne. |
AppDomainFlags | win:UInt32 | 0x1: Standarddomäne. 0x2: Ausführbare Datei. 0x4: Anwendungsdomäne, Bit 28-31: Freigaberichtlinie für diese Domäne. 0: Eine freigegebene Domäne. |
AppDomainName | win:UnicodeString | Anzeigename der Anwendungsdomäne. Kann sich während der Lebensdauer des Prozesses ändern. |
AppDomainIndex | win:UInt32 | Der Index dieser Anwendungsdomäne. |
ClrInstanceID | win:UInt16 | Eindeutige ID für die Instanz von CLR oder CoreCLR. |
CLR-Ladeprogramm-Assemblyereignisse
Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an.
Schlüsselwort zum Auslösen des Ereignisses | Ereignis | Ebene |
---|---|---|
LoaderKeyword (0 x 8) |
AssemblyLoad und AssemblyUnload |
Information (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AssemblyDCStart |
Information (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AssemblyDCEnd |
Information (4) |
Die folgende Tabelle zeigt die Ereignisinformationen an.
Ereignis | Ereignis-ID | BESCHREIBUNG |
---|---|---|
AssemblyLoad_V1 |
154 | Wird beim Laden einer Assembly ausgelöst. |
AssemblyUnload_V1 |
155 | Wird beim Entladen einer Assembly ausgelöst. |
AssemblyDCStart_V1 |
155 | Listet während eines Startrundowns Assemblys auf. |
AssemblyDCEnd_V1 |
156 | Listet während eines Endrundowns Assemblys auf. |
Die folgende Tabelle zeigt die Ereignisdaten an.
Feldname | Datentyp | Beschreibung |
---|---|---|
AssemblyID | win:UInt64 | Eindeutige ID für die Assembly. |
AppDomainID | win:UInt64 | ID der Domäne dieser Assembly. |
BindingID | win:UInt64 | ID, die die Assemblybindung eindeutig kennzeichnet. |
AssemblyFlags | win:UInt32 | 0x1: Domänenneutrale Assembly. 0x2: Dynamische Assembly. 0x4: Die Assembly verfügt über ein systemeigenes Image. 0x8: Entladbare Assembly. |
AssemblyName | win:UnicodeString | Vollqualifizierter Assemblyname. |
ClrInstanceID | win:UInt16 | Eindeutige ID für die Instanz von CLR oder CoreCLR. |
Modulereignisse
Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an.
Schlüsselwort zum Auslösen des Ereignisses | Ereignis | Ebene |
---|---|---|
LoaderKeyword (0 x 8) |
ModuleLoad_V2 und ModuleUnload_V2 |
Information (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
ModuleDCStart_V2 |
Information (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
ModuleDCEnd_V2 |
Information (4) |
Die folgende Tabelle zeigt die Ereignisinformationen an.
Ereignis | Ereignis-ID | BESCHREIBUNG |
---|---|---|
ModuleLoad_V2 |
152 | Wird ausgelöst, wenn ein Modul während der Lebensdauer eines Prozesses geladen wird. |
ModuleUnload_V2 |
153 | Wird ausgelöst, wenn ein Modul während der Lebensdauer eines Prozesses entladen wird. |
ModuleDCStart_V2 |
153 | Listet während eines Startrundowns Module auf. |
ModuleDCEnd_V2 |
154 | Listet während eines Endrundowns Module auf. |
Die folgende Tabelle zeigt die Ereignisdaten an.
Feldname | Datentyp | Beschreibung |
---|---|---|
ModuleID | win:UInt64 | Eindeutige ID für das Modul. |
AssemblyID | win:UInt64 | ID der Assembly, in der sich das Modul befindet. |
ModuleFlags | win:UInt32 | 0x1: Domänenneutrales Modul. 0x2: Das Modul verfügt über ein systemeigenes Image. 0x4: Dynamisches Modul. 0x8: Manifestmodul. |
Reserved1 | win:UInt32 | Reserviertes Feld. |
ModuleILPath | win:UnicodeString | Pfad des allgemeinen CIL-Images (Common Intermediate Language) für das Modul oder dynamischer Modulname, wenn es sich um eine dynamische Assembly (null-terminated) handelt. |
ModuleNativePath | win:UnicodeString | Pfad des systemeigenen Images für das Modul, sofern vorhanden (auf null endend). |
ClrInstanceID | win:UInt16 | Eindeutige ID für die Instanz von CLR oder CoreCLR. |
ManagedPdbSignature | win:GUID | Die GUID-Signatur der verwalteten Programmdatenbank (PDB), die diesem Modul entspricht. (Siehe Hinweise.) |
ManagedPdbAge | win:UInt32 | Die Alterszahl, die in die verwaltete PDB geschrieben wird, die diesem Modul entspricht. (Siehe Hinweise.) |
ManagedPdbBuildPath | win:UnicodeString | Der Pfad zu dem Ort, an dem die verwaltete PDB erstellt wurde, die diesem Modul entspricht. In einigen Fällen kann dies nur ein Dateiname sein. (Siehe Hinweise.) |
NativePdbSignature | win:GUID | Die GUID-Signatur der NGen (Native Image Generator)-PDB, die diesem Modul entspricht, sofern zutreffend. (Siehe Hinweise.) |
NativePdbAge | win:UInt32 | Die Alterszahl, die in die NGen-PDB geschrieben wird, die diesem Modul entspricht, sofern zutreffend. (Siehe Hinweise.) |
NativePdbBuildPath | win:UnicodeString | Der Pfad zu dem Ort, an dem die NGen-PDB erstellt wurde, die diesem Modul entspricht, sofern zutreffend. In einigen Fällen kann dies nur ein Dateiname sein. (Siehe Hinweise.) |
Bemerkungen
Die Felder mit "Pdb" im Namen können von Profilerstellungstools verwendet werden, um PDBs zu suchen, die den Modulen entsprechen, die während der Profilerstellungssitzung geladen wurden. Die Werte dieser Felder entsprechen den Daten, die in die IMAGE_DIRECTORY_ENTRY_DEBUG-Abschnitte des Moduls geschrieben werden, das normalerweise von Debuggern verwendet wird, um die Suche nach PDBs zu erleichtern, die den geladenen Modulen entsprechen.
Die Feldnamen, die mit "ManagedPdb" beginnen, beziehen sich auf den verwalteten PDB, der dem vom verwalteten Compiler generierten CIL-Modul entspricht (z. B. C# oder Visual Basic-Compiler). Dieser PDB verwendet das verwaltete PDB-Format und beschreibt, wie Elemente aus dem ursprünglichen verwalteten Quellcode, z. B. Dateien, Zeilennummern und Symbolnamen, den CIL-Elementen zugeordnet werden, die im CIL-Modul kompiliert werden.
Die Feldnamen, die mit "NativePdb" beginnen, verweisen auf die NGen-PDB, die durch Aufrufen von
NGEN createPDB
generiert wurde. Diese PDB verwendet das systemeigene PDB-Format und beschreibt, wie Elemente im ursprünglichen verwalteten Quellcode, z. B. Dateien, Zeilennummern und Symbolnamen, systemeigenen Elementen zugeordnet werden, die in das NGen-Modul kompiliert werden.
CLR-Domänenmodulereignisse
Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an.
Schlüsselwort zum Auslösen des Ereignisses | Ereignis | Ebene |
---|---|---|
LoaderKeyword (0 x 8) |
DomainModuleLoad_V1 |
Information (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
DomainModuleDCStart_V1 |
Information (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
DomainModuleDCEnd_V1 |
Information (4) |
Die folgende Tabelle zeigt die Ereignisinformationen an.
Ereignis | Ereignis-ID | BESCHREIBUNG |
---|---|---|
DomainModuleLoad_V1 |
151 | Wird ausgelöst, wenn ein Modul für eine Anwendungsdomäne geladen wird. |
DomainModuleDCStart_V1 |
151 | Listet während eines Startrundowns für eine Anwendungsdomäne geladene Module auf und wird für alle Anwendungsdomänen protokolliert. |
DomainModuleDCEnd_V1 |
152 | Listet während eines Endrundowns für eine Anwendungsdomäne geladene Module auf und wird für alle Anwendungsdomänen protokolliert. |
Die folgende Tabelle zeigt die Ereignisdaten an.
Feldname | Datentyp | Beschreibung |
---|---|---|
ModuleID | win:UInt64 | Kennzeichnet die Assembly, zu der dieses Modul gehört. |
AssemblyID | win:UInt64 | ID der Assembly, in der sich das Modul befindet. |
AppDomainID | win:UInt64 | ID der Anwendungsdomäne, in der dieses Modul verwendet wird. |
ModuleFlags | win:UInt32 | 0x1: Domänenneutrales Modul. 0x2: Das Modul verfügt über ein systemeigenes Image. 0x4: Dynamisches Modul. 0x8: Manifestmodul. |
Reserved1 | win:UInt32 | Reserviertes Feld. |
ModuleILPath | win:UnicodeString | Pfad des CIL-Images für das Modul oder dynamischer Modulname, wenn es sich um eine dynamische Assembly handelt (null-terminated). |
ModuleNativePath | win:UnicodeString | Pfad des systemeigenen Images für das Modul, sofern vorhanden (auf null endend). |
ClrInstanceID | win:UInt16 | Eindeutige ID für die Instanz von CLR oder CoreCLR. |
Modulbereichereignisse
Die folgende Tabelle zeigt das Schlüsselwort und die Ebene an.
Schlüsselwort zum Auslösen des Ereignisses | Ereignis | Ebene |
---|---|---|
PerfTrackKeyWord ) |
ModuleRange |
Information (4) |
PerfTrackKeyWord |
ModuleRangeDCStart |
Information (4) |
PerfTrackKeyWord |
ModuleRangeDCEnd |
Information (4) |
Die folgende Tabelle zeigt die Ereignisinformationen an.
Ereignis | Ereignis-ID | BESCHREIBUNG |
---|---|---|
ModuleRange |
158 | Dieses Ereignis ist vorhanden, wenn ein geladenes Native Image Generator (NGen)-Image mit IBC optimiert wurde und Informationen über die aktiven Bereiche des NGen-Image enthält. |
ModuleRangeDCStart |
160 | Ein ModuleRange -Ereignis, das zu Beginn eines Rundowns ausgelöst wird. |
ModuleRangeDCEnd |
161 | Ein ModuleRange -Ereignis, das am Ende eines Rundowns ausgelöst wird. |
Die folgende Tabelle zeigt die Ereignisdaten an.
Feldname | Datentyp | Beschreibung |
---|---|---|
ClrInstanceID | win:UInt16 | Identifiziert eine bestimmte Instanz der CLR in einem Prozess eindeutig, wenn mehrere Instanzen der CLR geladen sind. |
ModuleID | win:UInt64 | Kennzeichnet die Assembly, zu der dieses Modul gehört. |
RangeBegin | win:UInt32 | Der Offset im Modul, der den Anfang des Bereichs für den angegebenen RangeType darstellt. |
RangeSize | win:UInt32 | Die Größe des angegebenen Bereichs in Bytes. |
RangeType | win:UInt32 | Der einzelne Wert 0x4 zur Darstellung von Cold IBC-Bereichen. Zu einem späteren Zeitpunkt wird dieses Feld weitere Werte darstellen können. |
RangeSize1 | win:UInt32 | 0 gibt ungültige Daten an. |
RangeBegin2 | win:UnicodeString |
Bemerkungen
Wenn ein geladenes NGen-Image in einem .NET Framework-Prozess mit IBC optimiert wurde, wird das ModuleRange
-Ereignis, das die heißen Bereiche im NGen-Image enthält, zusammen mit dem moduleID
und ClrInstanceID
protokolliert. Wenn das NGen-Image nicht mit IBC optimiert wurde, wird dieses Ereignis nicht protokolliert. Um den Modulnamen zu bestimmen, muss dieses Ereignis mit modulbezogenen ETW-Ereignissen sortiert werden.
Die Nutzlastgröße für dieses Ereignis ist variabel; das Count
-Feld gibt die Anzahl von Bereichsoffsets an, die im Ereignis enthalten sind. Dieses Ereignis muss mit dem Windows IStart
-Ereignis sortiert werden, um die tatsächlichen Bereiche zu bestimmen. Das Windows-Image-Load-Ereignis wird protokolliert, wenn ein Bild geladen wird, und enthält die virtuelle Adresse des geladenen Bilds.
Modulbereichereignisse werden bei jeder ETW-Ebene größer oder gleich 4 ausgelöst und werden als Informationsereignisse klassifiziert.