Capturar e exibir dados do TraceLogging

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

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

  • Capturar rastreamento com o Gravador de Desempenho do Windows (wpr.exe ou wprui.exe).
  • Exibir rastreamento com a Performance Analyzer do Windows (wpa.exe).

Nota Para Windows Phone, você também pode usar Tracelog.exe e Xperf.exe para capturar o rastreamento. Confira "Para capturar rastreamento no telefone (usando Tracelog e XPerf)" abaixo.

Pré-requisitos

As ferramentas WPR e WPA devem ser compatíveis com a versão do TraceLogging com 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 o 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.

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

Arquivo WPRP de exemplo:

<?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 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 o componente para disparar eventos).

  5. Interrompa 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 Windows Performance Recorder (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 arquivo .wprp.
  3. Selecione o arquivo .wprp e clique em Abrir. A 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 do usuário do WPR, também será dada a opção de abrir o arquivo de log .etl no WPA.

Para capturar o rastreamento no telefone (usando Tracelog e XPerf)

  1. Inicie a captura de rastreamento do provedor.

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

  3. Interromper a captura de rastreamento.

    cmdd tracelog '-stop test'
    
  4. Mesclar resultados de rastreamento.

    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 o WPA

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

  1. Inicie o WPA.

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

  3. Exiba os eventos do provedor. No Explorer do Graph, expanda Atividade do Sistema.

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

  5. No modo de exibição Análise, localize os eventos do provedor para verificar se o registro em 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 pelo nome da coluna, o que pode facilitar a localização do provedor. Ao localizar seu provedor, clique com o botão direito do mouse no nome e selecione Filtrar para Seleção.