Partilhar via


Capturar e visualizar dados do TraceLogging

Você pode capturar e exibir dados do TraceLoggging usando as versões internas mais recentes do WPT (Ferramentas de Desempenho do Windows). Antes de publicar sua instrumentação, você deve testar o código do provedor TraceLogging para garantir que os dados do evento sejam gerados e estejam produzindo dados significativos nos momentos apropriados.

O processo de verificação de que a instrumentação está correta, envolve estas duas etapas:

  • Capture o traço com o Gravador de Desempenho do Windows (wpr.exe ou wprui.exe).
  • Exiba o rastreamento com o Analisador de Desempenho do Windows (wpa.exe).

Observação Para o Windows Phone, você também pode usar Tracelog.exe e Xperf.exe para capturar rastreamento. Veja "Capturar um rastreio no telefone (usando Tracelog e XPerf)" abaixo.

Pré-requisitos

As ferramentas WPR e WPA devem ser compatíveis com a versão do TraceLogging contra a qual você está vinculado. Se você não conseguir capturar ou decodificar seus eventos, pode ser porque as ferramentas não correspondem e não são compatíveis.

Para capturar dados de rastreamento com WPR

  1. Crie ou edite um perfil WPR (.wprp) para seu TraceLoggingProvider.

    Você pode usar o exemplo a seguir. Salve o conteúdo em um arquivo com a extensão de nome de arquivo .wprp. Substitua as seções TODO pelos valores apropriados para seu provedor. Por exemplo, se você registrou seu provedor por GUID, especifique o GUID neste arquivo.

    Observação Para provedores de modo kernel, adicione NonPagedMemory="true" ao elemento EventProvider Id, consulte o comentário no exemplo XML a seguir.

Exemplo de arquivo WPRP:

<?xml version="1.0" encoding="utf-8"?>
<!-- TODO: 
1. Find and replace "WorkshopTraceLoggingProvider" with your component name.
2. See TODO below to update GUID for your event provider
-->
<WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation" 
    Copyright="Microsoft Corporation" Company="Microsoft Corporation">
  <Profiles>
    <EventCollector Id="EventCollector_WorkshopTraceLoggingProvider" 
      Name="WorkshopTraceLoggingProviderCollector">
      <BufferSize Value="64" />
      <Buffers Value="4" />
    </EventCollector>

<!-- TODO: 
 1. Update Name attribute in EventProvider xml element with your provider GUID, 
    or if you specify an EventSource C# provider or call TraceLoggingRegister(...) 
    without a GUID, use star(*) before your provider name, 
    eg: Name="*MyEventSourceProvider" which will enable your provider appropriately.
 2. This sample lists more than 1 EventProvider xml element and references them again 
    in a Profile with EventProviderId xml element. For your component wprp, enable 
    the required number of providers and fix the Profile xml element appropriately
--> 
    <EventProvider Id="EventProvider_WorkshopTraceLoggingProvider" 
      Name="f9bc6c5d-4b98-43b5-90a1-1d0c8f45bf5a" />
<!-- For Kernel Mode providers, add NonPagedMemory="true" attribute to the 
  EventProvider Id element:

  Example:
  <EventProvider Id="EventProvider_UMDFReflector" 
    Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/> 

-->

    <Profile Id="WorkshopTraceLoggingProvider.Verbose.File" 
      Name="WorkshopTraceLoggingProvider" Description="WorkshopTraceLoggingProvider" 
      LoggingMode="File" DetailLevel="Verbose">
      <Collectors>
        <EventCollectorId Value="EventCollector_WorkshopTraceLoggingProvider">
          <EventProviders>
<!-- TODO:
 1. Fix your EventProviderId with Value same as the Id attribute on EventProvider 
    xml element above
-->
            <EventProviderId Value="EventProvider_WorkshopTraceLoggingProvider" />
          </EventProviders>
        </EventCollectorId>
      </Collectors>
    </Profile>

    <Profile Id="WorkshopTraceLoggingProvider.Light.File" 
      Name="WorkshopTraceLoggingProvider" 
      Description="WorkshopTraceLoggingProvider" 
      Base="WorkshopTraceLoggingProvider.Verbose.File" 
      LoggingMode="File" 
      DetailLevel="Light" />

    <Profile Id="WorkshopTraceLoggingProvider.Verbose.Memory" 
      Name="WorkshopTraceLoggingProvider" 
      Description="WorkshopTraceLoggingProvider" 
      Base="WorkshopTraceLoggingProvider.Verbose.File" 
      LoggingMode="Memory" 
      DetailLevel="Verbose" />

    <Profile Id="WorkshopTraceLoggingProvider.Light.Memory" 
      Name="WorkshopTraceLoggingProvider" 
      Description="WorkshopTraceLoggingProvider" 
      Base="WorkshopTraceLoggingProvider.Verbose.File" 
      LoggingMode="Memory" 
      DetailLevel="Light" />

  </Profiles>
</WindowsPerformanceRecorder>
  1. Para provedores de modo kernel, você precisa adicionar o atributo NonPagedMemory="true" ao elemento EventProvider Id.

    <EventProvider Id="EventProvider_myTraceLoggingProviderKM" 
      Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
    
  2. Salve o arquivo com a extensão de nome de arquivo (. WPRP).

  3. Inicie a captura usando o WPR a partir de uma janela do Prompt de Comando.

    <path to wpr>\wpr.exe -start GeneralProfile -start  yourTraceLoggingProvider.wprp
    

    O GeneralProfile capturará eventos do sistema. Para depuração geral, é uma boa ideia capturar eventos do sistema junto com os eventos do seu provedor.

  4. Execute o cenário de teste (carregue e descarregue o driver ou componente para acionar eventos).

  5. Pare a captura de rastreamento e mescle todas as gravações.

    <path to wpr>\wpr.exe -stop GeneralProfile -stop  yourTraceCaptureFile.etl description
    

Você também pode usar a interface do usuário do Gravador de Desempenho do Windows (Wprui.exe) para coletar dados de rastreamento.

<path to wpr>\wprui.exe
  1. Na janela WPR, se as opções estiverem ocultas, clique em Mais Opções.
  2. Clique em Adicionar perfil e navegue até o local do seu arquivo .wprp.
  3. Selecione o arquivo .wprp e clique em Abrir. O WPR validará o esquema XML do seu perfil.
  4. Clique em Iniciar e execute o cenário de teste.
  5. Clique em Salvar para mesclar os resultados e salvá-los em um arquivo. Se você usar a interface de usuário WPR, você também terá a opção de abrir o arquivo de log .etl no WPA.

Para capturar um rastreio no telemóvel (usando Tracelog e XPerf)

  1. Inicie o registo de rastreio do seu provedor.

    cmdd tracelog '-start test -f c:\test.etl -guid #providerguid'
    
  2. Execute seus cenários de teste para registrar eventos.

  3. Pare a captura de traços.

    cmdd tracelog '-stop test'
    
  4. Fundir resultados de rastreio.

    cmdd xperf -merge c:\test.etl c:\testmerged.etl
    
  5. Recupere o arquivo de log mesclado.

    getd c:\testmerged.etl
    

Exibir dados do TraceLogging usando WPA

Atualmente, WPA é o único visualizador que você pode usar para visualizar os arquivos etl que o TraceLogging produz.

  1. Inicie o protocolo WPA.

    <path to wpr>\wpa.exe
    
  2. Carregue o arquivo de rastreamento (.etl).

  3. Veja os eventos do seu fornecedor. No Graph Explorer, expanda Atividade do sistema.

  4. Clique duas vezes em Eventos Genéricos para visualizá-los no modo de exibição Análise.

  5. Na visualização Análise, localize os eventos do seu provedor para verificar se o log está funcionando.

    Na coluna Nome do Provedor da tabela Eventos Genéricos, localize e selecione a linha com o nome do provedor.

    Você pode clicar no cabeçalho da coluna para classificar por nome de coluna, o que pode facilitar a localização do seu provedor. Quando encontrar o seu fornecedor, clique com o botão direito do rato no nome e selecione Filtrar para Seleção.