Partilhar via


Fornecedores CLR ETW

O runtime de linguagem comum (CLR) tem dois fornecedores: o fornecedor de runtime e o fornecedor de rundown.

O fornecedor de runtime gera eventos, consoante as palavras-chave (categorias de eventos) que estão ativadas. Por exemplo, pode recolher eventos do carregador ao ativar a LoaderKeyword palavra-chave.

Os eventos de Rastreio de Eventos para Windows (ETW) são registados num ficheiro que tem uma extensão .etl, que pode ser posteriormente processada em ficheiros de valores separados por vírgulas (.csv), conforme necessário. Para obter informações sobre como converter o ficheiro .etl num ficheiro .csv, consulte Controlar o Registo de .NET Framework.

O Fornecedor de Runtime

O fornecedor de runtime é o principal fornecedor de CLR ETW.

O GUID do fornecedor de runtime clR é e13c0d23-ccbc-4e12-931b-d9cc2eee27e4.

Para obter exemplos de como registar e ver eventos CLR ETW com ferramentas normalmente disponíveis, veja Controling .NET Framework Logging (Controlar o Registo de .NET Framework).

Além de utilizar palavras-chave como LoaderKeyword, poderá ter de ativar palavras-chave para eventos de registo que podem ser gerados com demasiada frequência. As StartEnumerationKeyword palavras-chave e EndEnumerationKeyword ativam estes eventos e são resumidas em Palavras-chave e Níveis DO CLR ETW.

O Fornecedor de Rundown

O fornecedor de rundown tem de estar ativado para determinadas utilizações para fins especiais. No entanto, para a maioria dos utilizadores, o fornecedor de runtime deve ser suficiente.

O GUID do fornecedor de rundown CLR é A669021C-C450-4609-A035-5AF59AF4DF18.

Normalmente, o registo ETW é ativado antes do início de um processo e o registo é desativado após a saída do processo. No entanto, se o registo ETW estiver ativado durante a execução do processo, são necessárias informações adicionais sobre o processo. Por exemplo, para a resolução de símbolos, tem de registar eventos do método para métodos que já foram carregados antes de o registo ser ativado.

Os DCStart eventos e DCEnd capturam o estado do processo quando a recolha de dados foi iniciada e parada. (Estado refere-se a informações a um nível elevado, incluindo os métodos que já eram compilados just-in-time (JIT) e assemblagens que foram carregadas.) Estes dois eventos podem fornecer informações sobre o que já aconteceu no processo; por exemplo, que métodos foram compilados pelo JIT, etc.

Apenas os eventos com DC, DCStart, DCEndou DCInit nos respetivos nomes são gerados no fornecedor de rundown. Além disso, estes eventos são gerados apenas no fornecedor de rundown.

Além dos filtros de palavra-chave do evento, o fornecedor de rundown também suporta as StartRundownKeyword palavras-chave e EndRundownKeyword para fornecer filtragem direcionada.

Iniciar Rundown

É acionado um rundown inicial quando o registo no fornecedor de rundown é ativado com a StartRundownKeyword palavra-chave . Isto faz com que o DCStart evento seja gerado e captura o estado do sistema. Antes do início da enumeração, o DCStartInit evento é gerado. No final da enumeração, o DCStartComplete evento é gerado para notificar o controlador de que a recolha de dados terminou normalmente.

End Rundown

É acionado um resumo final quando o registo no fornecedor de rundown é ativado com a EndRundownKeyword palavra-chave . O rundown final para a criação de perfis num processo que continua a ser executado. Os DCEnd eventos capturam o estado do sistema quando a criação de perfis é parada.

Antes do início da enumeração, o DCEndInit evento é gerado. No final da enumeração, o DCEndComplete evento é gerado para notificar o consumidor de que a recolha de dados terminou normalmente. O rundown inicial e o rundown final são utilizados principalmente para a resolução de símbolos geridos. O rundown de início pode fornecer informações sobre o intervalo de endereços para métodos que já eram compilados pelo JIT antes do início da sessão de criação de perfis. O rundown final pode fornecer informações de intervalo de endereços para todos os métodos que foram compilados com JIT quando a criação de perfis está prestes a ser desativada.

O resumo final não ocorre automaticamente quando uma sessão de criação de perfis é parada. Em vez disso, uma ferramenta que procura executar a resolução de símbolos geridos tem de invocar explicitamente uma sessão de fornecedor de rundown CLR com a EndRundownKeyword palavra-chave ativada, imediatamente antes de a criação de perfis ser interrompida.

Embora o rundown inicial ou o rundown final possam fornecer informações do intervalo de endereços do método para a resolução de símbolos geridos, recomendamos que utilize a EndRundownKeyword palavra-chave (que fornece eventos DCEnd ) em vez da StartRundownKeyword palavra-chave (que fornece eventos DCStart ). A utilização StartRundownKeyword faz com que o resumo ocorra durante a sessão de criação de perfis, o que pode perturbar o cenário de criação de perfis.

Recolha de Dados ETW Com Fornecedores de Runtime e Rundown

O exemplo seguinte demonstra como utilizar o fornecedor de rundown CLR de uma forma que permite a resolução de símbolos de processos geridos com um impacto mínimo, independentemente de os processos começarem ou terminarem dentro ou fora da janela de criação de perfis.

  1. Ative o registo ETW com o fornecedor de runtime CLR:

    xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
    

    O registo será guardado no ficheiro clr1.etl.

  2. Para parar a criação de perfis enquanto o processo continua a ser executado, inicie o fornecedor de rundown para capturar os DCEnd eventos:

    xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
    

    Isto permite que a coleção de DCEnd eventos inicie uma sessão de resumo. Poderá ter de aguardar entre 30 a 60 segundos para que todos os eventos sejam recolhidos. O registo será guardado no ficheiro clr1.et2.

  3. Desative toda a criação de perfis ETW:

    xperf -stop clrRundown
    xperf -stop clr  
    
  4. Intercale os perfis para criar um ficheiro de registo:

    xperf -merge clr1.etl clr2.etl merged.etl  
    

    O ficheiro merged.etl irá conter os eventos do runtime e as sessões do fornecedor de rundown.

Uma ferramenta pode executar os passos 2 e 3 (iniciar uma sessão de rundown e, em seguida, terminar a criação de perfis) em vez de desativar imediatamente a criação de perfis quando um utilizador pedir a paragem da criação de perfis. Uma ferramenta também pode executar o passo 4.

Ver também