Provedores de ETW CLR
O common language runtime (CLR) tem dois provedores: o provedor de tempo de execução e o provedor de encerramento.
O provedor de tempo de execução gera eventos, dependendo de quais palavras-chave (categorias de eventos) estão ativadas. Por exemplo, você pode coletar eventos de carregador, permitindo que o LoaderKeyword palavra-chave.
Rastreamento de eventos do Windows (ETW) de eventos são registrados em um arquivo que possui uma extensão. ETL, que posteriormente pode ser post-processed em arquivos de valores separados por ponto-e-vírgula (. csv), conforme necessário. Para obter informações sobre como converter o arquivo. ETL para um arquivo. csv, consulte Controlando.NET Framework log.
O provedor de tempo de execução
O provedor de tempo de execução é o principal provedor de ETW CLR.
O provedor de tempo de execução CLR GUID é e13c0d23 ccbc 4e12 931b d9cc2eee27e4.
Para obter exemplos de como registrar e exibir eventos ETW CLR usando ferramentas comumente disponíveis, consulte Controlando.NET Framework log.
Para além de usar palavras-chave, como LoaderKeyword, talvez você precise ativar as palavras-chave para o log de eventos pode ser aumentado com muita freqüência. O StartEnumerationKeyword e o EndEnumerationKeyword palavras-chave habilitar esses eventos e estão resumidas na CLR ETW Keywords and Levels
O provedor de encerramento
O provedor de encerramento deve ser ativado para determinados usos de propósito especial. No entanto, para a maioria dos usuários, o provedor de tempo de execução deve ser suficiente.
O provedor de encerramento do CLR GUID é A669021C C450 4609 A035 5AF59AF4DF18.
Normalmente, o log do ETW está ativado antes que inicia um processo e o log está desativado depois que o processo for encerrado. No entanto, se o log do ETW é ativado durante o processo de execução, são necessárias informações adicionais sobre o processo. Por exemplo, para resolução de símbolo você precisará registrar eventos de método para métodos que já foram carregados antes do log foi ativado.
O DCStart e DCEnd o estado do processo de captura de eventos quando a coleta de dados foi iniciada e interrompida. (Estado se refere às informações em um alto nível, incluindo os métodos que já estavam just-in-time (JIT) compilado e assemblies carregados). Esses dois eventos podem fornecer informações sobre o que já aconteceu no processo; Por exemplo, quais métodos foram JIT-compilado e assim por diante.
Somente os eventos com DC, DCStart, DCEnd, ou DCInit em seus nomes são gerados em provedor de encerramento. Além disso, esses eventos são gerados somente sob o provedor de encerramento.
Além dos filtros de palavra-chave do evento, o provedor de encerramento também suporta a StartRundownKeyword e EndRundownKeyword direcionado de palavras-chave para oferecer filtragem.
Iniciar encerramento
Um resumo de início é acionado quando o provedor de encerramento o log está habilitado com o StartRundownKeyword palavra-chave. Isso faz com que o DCStart evento a ser gerado e captura o estado do sistema. Antes do início da enumeração, a DCStartInit evento é gerado. No final da enumeração, a DCStartComplete evento é gerado para notificar o controlador de coleta de dados foi finalizada normalmente.
Resumo de fim
Um resumo final é acionado quando o provedor de encerramento o log está habilitado com o EndRundownKeyword palavra-chave. Paradas de encerramento final da criação de perfil em um processo que continua a executar. O DCEnd o estado do sistema de captura de eventos quando o perfil é interrompido.
Antes do início da enumeração, a DCEndInit evento é gerado. No final da enumeração, a DCEndComplete evento é gerado para notificar o consumidor a coleta de dados foi finalizada normalmente. Inicie o encerramento e encerramento de extremidade são usados principalmente para resolução de símbolo gerenciado. Resumo de início rápido pode fornecer informações de intervalo de endereço para métodos que já estavam compilado em JIT antes que a sessão de criação de perfil foi iniciada. Resumo do final pode fornecer informações de intervalo de endereço para todos os métodos que foram compilados em JIT quando a criação de perfil está prestes a ser desativado.
Final de encerramento não acontece automaticamente quando uma sessão de criação de perfil é interrompida. Em vez disso, uma ferramenta que está procurando para executar a resolução de símbolo gerenciado tem ativem explicitamente uma sessão de encerramento do provedor do CLR com o EndRundownKeyword palavra-chave habilitada, antes de criação de perfil está parada.
Embora o encerramento de início ou de fim de encerramento pode fornecer informações de intervalo de endereço do método para resolução de símbolo gerenciado, recomendamos que você use o EndRundownKeyword palavra-chave (quais fontes DCEnd eventos) em vez da StartRundownKeyword palavra-chave (quais fontes DCStart eventos). Usando StartRundownKeyword faz com que o encerramento de acontecer durante a sessão de criação de perfil, que pode incomodar o cenário perfilado.
Usando o tempo de execução e encerramento provedores de coleta de dados ETW
O exemplo a seguir demonstra como usar o provedor de encerramento do CLR em uma forma que permita a resolução de símbolo de processos gerenciados com o mínimo de impacto, independentemente dos processos de iniciar ou terminam dentro ou fora da janela de perfil.
Ative o log do ETW usando o provedor de tempo de execução CLR:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
O registro será salvo no arquivo clr1.etl.
Para interromper a criação de perfil enquanto o processo continua a executar, iniciar o provedor de encerramento para capturar a DCEnd eventos:
xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
Isso possibilita a coleta de DCEnd eventos para iniciar um resumo da sessão. Talvez você precise esperar 30 a 60 segundos para todos os eventos a serem coletados. O registro será salvo no arquivo clr1.et2.
Desative todos os ETW profiling:
xperf -stop clrRundown xperf -stop clr
Mescle os perfis para criar um arquivo de log:
xperf -merge -d clr1.etl clr2.etl merged.etl
O arquivo merged.etl conterá os eventos de tempo de execução e as sessões de encerramento do provedor.
Uma ferramenta pode executar as etapas 2 e 3 (Iniciando uma sessão de encerramento e, em seguida, encerrando a criação de perfil) ao invés de desativar imediatamente o perfil quando um usuário solicitações de criação de perfil a ser parado. Uma ferramenta também pode executar a etapa 4.