Eventos Loader ETW
Esses eventos coletam informações relacionadas ao carregamento e descarregamento de domínios, assemblies e módulos de aplicativos.
Todos os eventos do carregador são gerados sob a LoaderKeyword
palavra-chave (0x8). Os DCStart
eventos e são DCEnd
gerados em LoaderRundownKeyword
(0x8) com StartRundown
/EndRundown
habilitado. (Para obter mais informações, consulte Palavras-chave e níveis do CLR ETW.)
Eventos do domínio do aplicativo
A tabela a seguir mostra a palavra-chave e o nível.
Palavra-chave para levantar o evento | Evento | Level |
---|---|---|
LoaderKeyword (0x8) |
AppDomainLoad_V1 e AppDomainUnLoad_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AppDomainDCStart_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AppDomainDCEnd_V1 |
Informativo (4) |
A tabela a seguir mostra as informações do evento.
Evento | ID do Evento | Description |
---|---|---|
AppDomainLoad_V1 (registrado para todos os domínios de aplicativo) |
156 | Gerado sempre que um domínio de aplicativo é criado durante o tempo de vida de um processo. |
AppDomainUnLoad_V1 |
157 | Gerado sempre que um domínio de aplicativo é destruído durante o tempo de vida de um processo. |
AppDomainDCStart_V1 |
157 | Enumera os domínios de aplicativo durante um resumo de início. |
AppDomainDCEnd_V1 |
158 | Enumera os domínios de aplicativo durante um rundown final. |
A tabela a seguir mostra os dados do evento.
Nome do campo | Tipo de dados | Description |
---|---|---|
AppDomainID | vitória:UInt64 | O identificador exclusivo de um domínio de aplicativo. |
AppDomainFlags | vitória:UInt32 | 0x1: Domínio padrão. 0x2: Executável. 0x4: Domínio de aplicação, bit 28-31: Política de partilha deste domínio. 0: Um domínio compartilhado. |
AppDomainName | win:UnicodeString | Nome de domínio de aplicação amigável. Pode mudar durante a vida útil do processo. |
AppDomainIndex | Win:UInt32 | O índice deste domínio de aplicação. |
ClrInstanceID | vitória:UInt16 | ID exclusivo para a instância de CLR ou CoreCLR. |
Eventos de montagem do carregador CLR
A tabela a seguir mostra a palavra-chave e o nível.
Palavra-chave para levantar o evento | Evento | Level |
---|---|---|
LoaderKeyword (0x8) |
AssemblyLoad e AssemblyUnload |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
AssemblyDCStart |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
AssemblyDCEnd |
Informativo (4) |
A tabela a seguir mostra as informações do evento.
Evento | ID do Evento | Description |
---|---|---|
AssemblyLoad_V1 |
154 | Gerado quando um conjunto é carregado. |
AssemblyUnload_V1 |
155 | Acionado quando um conjunto é descarregado. |
AssemblyDCStart_V1 |
155 | Enumera assemblies durante um resumo de início. |
AssemblyDCEnd_V1 |
156 | Enumera assemblies durante um rundown final. |
A tabela a seguir mostra os dados do evento.
Nome do campo | Tipo de dados | Description |
---|---|---|
ID da montagem | vitória:UInt64 | ID exclusivo para a montagem. |
AppDomainID | vitória:UInt64 | ID do domínio deste assembly. |
BindingID | vitória:UInt64 | ID que identifica exclusivamente a associação de assembly. |
AssemblyFlags | vitória:UInt32 | 0x1: Montagem neutra de domínio. 0x2: Montagem dinâmica. 0x4: Assembly tem uma imagem nativa. 0x8: Montagem colecionável. |
AssemblyName | win:UnicodeString | Nome de montagem totalmente qualificado. |
ClrInstanceID | vitória:UInt16 | ID exclusivo para a instância de CLR ou CoreCLR. |
Eventos do módulo
A tabela a seguir mostra a palavra-chave e o nível.
Palavra-chave para levantar o evento | Evento | Level |
---|---|---|
LoaderKeyword (0x8) |
ModuleLoad_V2 e ModuleUnload_V2 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
ModuleDCStart_V2 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
ModuleDCEnd_V2 |
Informativo (4) |
A tabela a seguir mostra as informações do evento.
Evento | ID do Evento | Description |
---|---|---|
ModuleLoad_V2 |
152 | Gerado quando um módulo é carregado durante a vida útil de um processo. |
ModuleUnload_V2 |
153 | Gerado quando um módulo é descarregado durante a vida útil de um processo. |
ModuleDCStart_V2 |
153 | Enumera módulos durante um resumo inicial. |
ModuleDCEnd_V2 |
154 | Enumera módulos durante um rundown final. |
A tabela a seguir mostra os dados do evento.
Nome do campo | Tipo de dados | Description |
---|---|---|
ID do módulo | vitória:UInt64 | ID exclusivo para o módulo. |
ID da montagem | vitória:UInt64 | ID do conjunto em que este módulo reside. |
ModuleFlags | vitória:UInt32 | 0x1: Módulo neutro de domínio. 0x2: O módulo tem uma imagem nativa. 0x4: Módulo dinâmico. 0x8: Módulo de manifesto. |
Reservado1 | vitória:UInt32 | Campo reservado. |
ModuleILPath | win:UnicodeString | Caminho da imagem Common Intermediate Language (CIL) para o módulo ou nome do módulo dinâmico se for um assembly dinâmico (terminado em nulo). |
ModuleNativePath | win:UnicodeString | Caminho da imagem nativa do módulo, se presente (terminada em nulo). |
ClrInstanceID | vitória:UInt16 | ID exclusivo para a instância de CLR ou CoreCLR. |
ManagedPdbSignature | win:GUID | Assinatura GUID do banco de dados de programa gerenciado (PDB) que corresponde a este módulo. (Ver Observações.) |
ManagedPdbAge | vitória:UInt32 | Número de idade gravado no APO gerido que corresponde a este módulo. (Ver Observações.) |
ManagedPdbBuildPath | win:UnicodeString | Caminho para o local onde o PDB gerenciado que corresponde a este módulo foi criado. Em alguns casos, isso pode ser apenas um nome de arquivo. (Ver Observações.) |
NativePdbSignature | win:GUID | Assinatura GUID do PDB do Native Image Generator (NGen) que corresponde a este módulo, se aplicável. (Ver Observações.) |
NativePdbAge | vitória:UInt32 | Número de idade escrito no APO NGen que corresponde a este módulo, se aplicável. (Ver Observações.) |
NativePdbBuildPath | win:UnicodeString | Caminho para o local onde o PDB NGen que corresponde a este módulo foi construído, se aplicável. Em alguns casos, isso pode ser apenas um nome de arquivo. (Ver Observações.) |
Observações
Os campos que têm "Pdb" em seus nomes podem ser usados por ferramentas de criação de perfil para localizar PDBs que correspondam aos módulos que foram carregados durante a sessão de criação de perfil. Os valores desses campos correspondem aos dados gravados nas seções IMAGE_DIRECTORY_ENTRY_DEBUG do módulo normalmente usadas pelos depuradores para ajudar a localizar PDBs que correspondem aos módulos carregados.
Os nomes de campo que começam com "ManagedPdb" referem-se ao PDB gerenciado correspondente ao módulo CIL que foi gerado pelo compilador gerenciado (como o compilador C# ou Visual Basic). Este PDB usa o formato PDB gerenciado e descreve como os elementos do código-fonte gerenciado original, como arquivos, números de linha e nomes de símbolos, são mapeados para elementos CIL que são compilados no módulo CIL.
Os nomes de campo que começam com "NativePdb" referem-se ao PDB NGen gerado pela chamada
NGEN createPDB
. Este PDB usa o formato PDB nativo e descreve como os elementos do código-fonte gerenciado original, como arquivos, números de linha e nomes de símbolos, são mapeados para elementos nativos que são compilados no módulo NGen.
Eventos do módulo de domínio CLR
A tabela a seguir mostra a palavra-chave e o nível.
Palavra-chave para levantar o evento | Evento | Level |
---|---|---|
LoaderKeyword (0x8) |
DomainModuleLoad_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +StartRundownKeyword |
DomainModuleDCStart_V1 |
Informativo (4) |
LoaderRundownKeyword (0x8) +EndRundownKeyword |
DomainModuleDCEnd_V1 |
Informativo (4) |
A tabela a seguir mostra as informações do evento.
Evento | ID do Evento | Description |
---|---|---|
DomainModuleLoad_V1 |
151 | Gerado quando um módulo é carregado para um domínio de aplicativo. |
DomainModuleDCStart_V1 |
151 | Enumera módulos carregados para um domínio de aplicativo durante um rundown de início e é registrado para todos os domínios de aplicativo. |
DomainModuleDCEnd_V1 |
152 | Enumera módulos carregados para um domínio de aplicativo durante um rundown final e é registrado para todos os domínios de aplicativo. |
A tabela a seguir mostra os dados do evento.
Nome do campo | Tipo de dados | Description |
---|---|---|
ID do módulo | vitória:UInt64 | Identifica o conjunto ao qual este módulo pertence. |
ID da montagem | vitória:UInt64 | ID do conjunto em que este módulo reside. |
AppDomainID | vitória:UInt64 | ID do domínio do aplicativo no qual este módulo é usado. |
ModuleFlags | vitória:UInt32 | 0x1: Módulo neutro de domínio. 0x2: O módulo tem uma imagem nativa. 0x4: Módulo dinâmico. 0x8: Módulo de manifesto. |
Reservado1 | vitória:UInt32 | Campo reservado. |
ModuleILPath | win:UnicodeString | Caminho da imagem CIL para o módulo ou nome do módulo dinâmico se for um assembly dinâmico (terminado em nulo). |
ModuleNativePath | win:UnicodeString | Caminho da imagem nativa do módulo, se presente (terminada em nulo). |
ClrInstanceID | vitória:UInt16 | ID exclusivo para a instância de CLR ou CoreCLR. |
Eventos da gama de módulos
A tabela a seguir mostra a palavra-chave e o nível.
Palavra-chave para levantar o evento | Evento | Level |
---|---|---|
PerfTrackKeyWord ) |
ModuleRange |
Informativo (4) |
PerfTrackKeyWord |
ModuleRangeDCStart |
Informativo (4) |
PerfTrackKeyWord |
ModuleRangeDCEnd |
Informativo (4) |
A tabela a seguir mostra as informações do evento.
Evento | ID do Evento | Description |
---|---|---|
ModuleRange |
158 | Esse evento estará presente se uma imagem carregada do NGen (Native Image Generator) tiver sido otimizada com o IBC e contiver informações sobre as seções ativas da imagem NGen. |
ModuleRangeDCStart |
160 | Um ModuleRange evento disparado no início de um rundown. |
ModuleRangeDCEnd |
161 | Um ModuleRange evento disparado no final de um resumo. |
A tabela a seguir mostra os dados do evento.
Nome do campo | Tipo de dados | Description |
---|---|---|
ClrInstanceID | vitória:UInt16 | Identifica exclusivamente uma instância específica do CLR em um processo se várias instâncias do CLR forem carregadas. |
ID do módulo | vitória:UInt64 | Identifica o conjunto ao qual este módulo pertence. |
IntervaloComeçar | vitória:UInt32 | O deslocamento no módulo que representa o início do intervalo para o tipo de intervalo especificado. |
IntervaloTamanho | vitória:UInt32 | O tamanho do intervalo especificado em bytes. |
Tipo de Intervalo | vitória:UInt32 | Um único valor, 0x4, para representar intervalos de IBC frios. Este campo pode representar mais valores no futuro. |
Tamanho da gama1 | vitória:UInt32 | 0 indica dados incorretos. |
IntervaloBegin2 | win:UnicodeString |
Observações
Se uma imagem NGen carregada em um processo do .NET Framework tiver sido otimizada com o IBC, o ModuleRange
evento que contém os intervalos de acesso na imagem NGen será registrado junto com seu moduleID
e ClrInstanceID
. Se a imagem NGen não estiver otimizada com IBC, esse evento não será registrado. Para determinar o nome do módulo, esse evento deve ser agrupado com os eventos ETW de carga do módulo.
O tamanho da carga útil para este evento é variável; O Count
campo indica o número de deslocamentos de intervalo contidos no evento. Esse evento deve ser agrupado com o evento do Windows IStart
para determinar os intervalos reais. O evento Windows Image Load é registrado sempre que uma imagem é carregada e contém o endereço virtual da imagem carregada.
Os eventos de intervalo de módulos são disparados sob qualquer nível ETW maior ou igual a 4 e são classificados como eventos informativos.