Eventos ETW de cargador
Estos eventos recopilan información relativa a la carga y descarga de dominios de aplicación, ensamblados y módulos.
Todos los eventos de cargador se generan bajo la palabra clave LoaderKeyword
(0x8). Los eventos DCStart
y DCEnd
se generan bajo LoaderRundownKeyword
(0x8) con StartRundown
/EndRundown
habilitado. (Para obtener más información, vea CLR ETW Keywords and Levels).
Eventos de dominio de aplicación
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Evento | Nivel |
---|---|---|
LoaderKeyword (0x8) |
AppDomainLoad_V1 y AppDomainUnLoad_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AppDomainDCStart_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AppDomainDCEnd_V1 |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
AppDomainLoad_V1 (registrado para todos los dominios de aplicación) |
156 | Se genera cuando se crea un dominio de aplicación durante un proceso. |
AppDomainUnLoad_V1 |
157 | Se genera cuando se destruye un dominio de aplicación durante un proceso. |
AppDomainDCStart_V1 |
157 | Enumera los dominios de aplicación durante una detención de inicio. |
AppDomainDCEnd_V1 |
158 | Enumera los dominios de aplicación durante una detención de finalización. |
En la siguiente tabla se muestran los datos del evento.
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
AppDomainID | win:UInt64 | Identificador único de un dominio de aplicación. |
AppDomainFlags | win:UInt32 | 0x1: dominio predeterminado. 0x2: ejecutable. 0x4: dominio de aplicación, bit 28-31: directiva de uso compartido de este dominio. 0: un dominio compartido. |
AppDomainName | win:UnicodeString | Nombre descriptivo de dominio de aplicación. Puede cambiar durante la vigencia del proceso. |
AppDomainIndex | win:UInt32 | Índice de este dominio de aplicación. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Eventos de ensamblado de cargador CLR
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Evento | Nivel |
---|---|---|
LoaderKeyword (0x8) |
AssemblyLoad y AssemblyUnload |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AssemblyDCStart |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AssemblyDCEnd |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
AssemblyLoad_V1 |
154 | Se genera cuando se carga un ensamblado. |
AssemblyUnload_V1 |
155 | Se genera cuando se descarga un ensamblado. |
AssemblyDCStart_V1 |
155 | Enumera los ensamblados durante una detención de inicio. |
AssemblyDCEnd_V1 |
156 | Enumera los ensamblados durante una detención de finalización. |
En la siguiente tabla se muestran los datos del evento.
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
AssemblyID | win:UInt64 | Identificador único para el ensamblado. |
AppDomainID | win:UInt64 | Identificador del dominio de este ensamblado. |
BindingID | win:UInt64 | Identificador que identifica de forma exclusiva el enlace de ensamblado. |
AssemblyFlags | win:UInt32 | 0x1: ensamblado neutro de dominio. 0x2: ensamblado dinámico. 0x4: ensamblado con una imagen nativa. 0x8: ensamblado recopilable. |
AssemblyName | win:UnicodeString | Nombre completo del ensamblado. |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Eventos de módulo
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Evento | Nivel |
---|---|---|
LoaderKeyword (0x8) |
ModuleLoad_V2 y ModuleUnload_V2 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
ModuleDCStart_V2 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
ModuleDCEnd_V2 |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
ModuleLoad_V2 |
152 | Se genera cuando se carga un módulo durante la duración de un proceso. |
ModuleUnload_V2 |
153 | Se genera cuando se descarga un módulo durante la duración de un proceso. |
ModuleDCStart_V2 |
153 | Enumera los módulos durante una detención de inicio. |
ModuleDCEnd_V2 |
154 | Enumera los módulos durante una detención de finalización. |
En la siguiente tabla se muestran los datos del evento.
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
ModuleID | win:UInt64 | Identificador único para el módulo. |
AssemblyID | win:UInt64 | Identificador del ensamblado en el que reside este módulo. |
ModuleFlags | win:UInt32 | 0x1: módulo neutro de dominio. 0x2: módulo con una imagen nativa. 0x4: módulo dinámico. 0x8: módulo de manifiesto. |
Reserved1 | win:UInt32 | Campo reservado. |
ModuleILPath | win:UnicodeString | Ruta de acceso de la imagen de lenguaje intermedio común (CIL) para el módulo o nombre del módulo dinámico si es un ensamblado dinámico (terminado en null). |
ModuleNativePath | win:UnicodeString | Ruta de acceso de la imagen nativa de módulo, si está presente (terminado en null). |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
ManagedPdbSignature | win:GUID | Firma GUID de la base de datos de programa (PDB) administrada que coincide con este módulo. (Vea la sección Comentarios). |
ManagedPdbAge | win:UInt32 | Número de antigüedad escrito en la PDB administrada que coincide con este módulo. (Vea la sección Comentarios). |
ManagedPdbBuildPath | win:UnicodeString | Ruta de acceso a la ubicación donde se creó la PDB administrada que coincide con este módulo. En algunos casos, puede tratarse simplemente de un nombre de archivo. (Vea la sección Comentarios). |
NativePdbSignature | win:GUID | Firma GUID del PDB del generador de imágenes nativas (NGen) que coincide con este módulo, en su caso. (Vea la sección Comentarios). |
NativePdbAge | win:UInt32 | Número de antigüedad escrito en la PDB de NGen que coincide con este módulo, en su caso. (Vea la sección Comentarios). |
NativePdbBuildPath | win:UnicodeString | Ruta de acceso a la ubicación donde se creó la PDB de NGen que coincide con este módulo, en su caso. En algunos casos, puede tratarse simplemente de un nombre de archivo. (Vea la sección Comentarios). |
Comentarios
Los campos que tienen “Pdb” en sus nombres pueden ser usados por herramientas de generación de perfiles con el objetivo de buscar las PDB que coincidan con los módulos que se cargaron durante la sesión de generación de perfiles. Los valores de estos campos se corresponden a los datos escritos en las secciones IMAGE_DIRECTORY_ENTRY_DEBUG del módulo usadas normalmente en los depuradores para ayudar a localizar las PDB que coinciden con los módulos cargados.
Los nombres de campo que comienzan por "ManagedPdb" hacen referencia a la PDB administrada correspondiente al módulo CIL generado por el compilador administrado (como el compilador de C# o Visual Basic). Esta PDB usa el formato PDB administrado y describe cómo los elementos del código fuente administrado original, como archivos, números de línea y nombres de símbolos, se asignan a los elementos CIL compilados en el módulo CIL.
Los nombres de campo que empiezan por “NativePdb” hacen referencia a la PDB de NGen generada al llamar a
NGEN createPDB
. Esta PDB usa el formato de PDB nativa y describe el modo en que los elementos del código fuente administrado original —como archivos, números de línea y nombres de símbolos— se asignan a los elementos nativos que se compilan en el módulo NGen.
Eventos del módulo de dominio CLR
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Evento | Nivel |
---|---|---|
LoaderKeyword (0x8) |
DomainModuleLoad_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
DomainModuleDCStart_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
DomainModuleDCEnd_V1 |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
DomainModuleLoad_V1 |
151 | Se genera cuando se carga un módulo para un dominio de aplicación. |
DomainModuleDCStart_V1 |
151 | Enumera los módulos cargados para un dominio de aplicación durante una detención de inicio y se registra para todos los dominios de aplicación. |
DomainModuleDCEnd_V1 |
152 | Enumera los módulos cargados para un dominio de aplicación durante una detención de finalización y se registra para todos los dominios de aplicación. |
En la siguiente tabla se muestran los datos del evento.
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
ModuleID | win:UInt64 | Identifica el ensamblado al que pertenece este módulo. |
AssemblyID | win:UInt64 | Identificador del ensamblado en el que reside este módulo. |
AppDomainID | win:UInt64 | Identificador del dominio de aplicación en el que se usa este módulo. |
ModuleFlags | win:UInt32 | 0x1: módulo neutro de dominio. 0x2: módulo con una imagen nativa. 0x4: módulo dinámico. 0x8: módulo de manifiesto. |
Reserved1 | win:UInt32 | Campo reservado. |
ModuleILPath | win:UnicodeString | Ruta de acceso de la imagen CIL del módulo o nombre del módulo dinámico si es un ensamblado dinámico (terminado en null). |
ModuleNativePath | win:UnicodeString | Ruta de acceso de la imagen nativa de módulo, si está presente (terminado en null). |
ClrInstanceID | win:UInt16 | Identificador único para la instancia de CLR o CoreCLR. |
Eventos de intervalo de módulo
En la tabla siguiente se muestra la palabra clave y el nivel.
Palabra clave para generar el evento | Evento | Nivel |
---|---|---|
PerfTrackKeyWord ) |
ModuleRange |
Informativo (4) |
PerfTrackKeyWord |
ModuleRangeDCStart |
Informativo (4) |
PerfTrackKeyWord |
ModuleRangeDCEnd |
Informativo (4) |
En la siguiente tabla se muestra la información del evento.
Evento | Id. de evento | Descripción |
---|---|---|
ModuleRange |
158 | Este evento está presente si una imagen cargada del generador de imágenes nativas (NGen) se ha optimizado con IBC y contiene información sobre las secciones activas de la imagen de NGen. |
ModuleRangeDCStart |
160 | Un evento ModuleRange se desencadenó al principio de una detención. |
ModuleRangeDCEnd |
161 | Un evento ModuleRange se desencadenó al final de una detención. |
En la siguiente tabla se muestran los datos del evento.
Nombre del campo | Tipo de datos | Descripción |
---|---|---|
ClrInstanceID | win:UInt16 | Identifica de forma única una instancia específica de CLR en un proceso si se cargan varias instancias de CLR. |
ModuleID | win:UInt64 | Identifica el ensamblado al que pertenece este módulo. |
RangeBegin | win:UInt32 | Desplazamiento en el módulo que representa el inicio del intervalo para el tipo de intervalo especificado. |
RangeSize | win:UInt32 | Tamaño del intervalo especificado, en bytes. |
RangeType | win:UInt32 | Un valor único, 0x4, para representar los intervalos fríos de IBC. Este campo puede representar más valores en el futuro. |
RangeSize1 | win:UInt32 | 0 indica que los datos son incorrectos. |
RangeBegin2 | win:UnicodeString |
Comentarios
Si una imagen de NGen cargada en un proceso de .NET Framework se optimiza con IBC, el evento ModuleRange
que contiene los intervalos calientes en la imagen de NGen se registra junto con su moduleID
y ClrInstanceID
. Si la imagen de NGen no está optimizada con IBC, este evento no se registra. Para determinar el nombre del módulo, el evento debe estar intercalado con los eventos ETW de carga de módulo.
El tamaño de carga para este evento es variable; el campo Count
indica el número de desplazamientos de intervalo contenido en el evento. Este evento debe estar intercalado con el evento IStart
de Windows para determinar los intervalos reales. El evento de carga de imagen de Windows se registra siempre que se carga una imagen y contiene la dirección virtual de la imagen cargada.
Los eventos del intervalo de módulo se desencadenan en cualquier nivel ETW mayor o igual que 4 y se clasifican como eventos informativos.