Partilhar via


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.

Consulte também