Поделиться через


Сбор и просмотр данных TraceLogging

Вы можете записывать и просматривать данные TraceLoggging с помощью последних внутренних версий средств производительности Windows (WPT). Перед публикацией инструментирования необходимо протестировать код поставщика TraceLogging, чтобы убедиться, что данные о событиях создаются и создаются значимые данные в соответствующее время.

Процесс проверки правильности инструментирования состоит из следующих двух этапов:

  • Запись трассировки с помощью средства записи производительности Windows (wpr.exe или wprui.exe).
  • Просмотр трассировки с помощью Анализатор производительности Windows (wpa.exe).

Примечание Для Windows Phone можно также использовать Tracelog.exe и Xperf.exe для записи трассировки. См. раздел "Запись трассировки на телефоне (с помощью Tracelog и XPerf)" ниже.

Необходимые условия

Средства WPR и WPA должны быть совместимы с версией TraceLogging, с которым вы связаны. Если вы не можете записать или декодировать события, это может быть связано с тем, что инструменты не совпадают и несовместимы.

Сбор данных трассировки с помощью WPR

  1. Создайте или измените профиль WPR (.wprp) для TraceLoggingProvider.

    Можно использовать следующий пример. Сохраните содержимое в файл с расширением .wprp. Замените разделы TODO соответствующими значениями для вашего поставщика. Например, если вы зарегистрировали поставщик по guid, укажите guid в этом файле.

    Примечание Для поставщиков режима ядра добавьте NonPagedMemory="true" в элемент EventProvider Id. См. комментарий в следующем примере XML.

Пример файла 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. Для поставщиков режима ядра необходимо добавить атрибут NonPagedMemory="true" в элемент EventProvider Id.

    <EventProvider Id="EventProvider_myTraceLoggingProviderKM" 
      Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
    
  2. Сохраните файл с расширением имени файла (. WPRP).

  3. Запустите запись с помощью WPR из окна командной строки.

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

    GeneralProfile будет записывать системные события. Для общей отладки рекомендуется записывать системные события вместе с событиями от поставщика.

  4. Запустите сценарий тестирования (загрузите и выгрузите драйвер или компонент для активации событий).

  5. Остановите запись трассировки и объедините все записи.

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

Вы также можете использовать пользовательский интерфейс Windows Performance Recorder (Wprui.exe) для сбора данных трассировки.

<path to wpr>\wprui.exe
  1. Если параметры скрыты, в окне WPR щелкните Дополнительные параметры.
  2. Щелкните Добавить профиль и перейдите к расположению WPRP-файла.
  3. Выберите WPRP-файл и нажмите кнопку Открыть. WPR проверит схему XML вашего профиля.
  4. Нажмите кнопку Пуск и запустите тестовый сценарий.
  5. Нажмите кнопку Сохранить , чтобы объединить результаты и сохранить их в файл. Если вы используете пользовательский интерфейс WPR, вы также можете открыть ETL-файл журнала в WPA.

Запись трассировки на телефоне (с помощью Tracelog и XPerf)

  1. Запустите запись трассировки поставщика.

    cmdd tracelog '-start test -f c:\test.etl -guid #providerguid'
    
  2. Запустите тестовые сценарии для регистрации событий.

  3. Остановка отслеживания трассировки.

    cmdd tracelog '-stop test'
    
  4. Объединить результаты трассировки.

    cmdd xperf -merge c:\test.etl c:\testmerged.etl
    
  5. Получите объединенный файл журнала.

    getd c:\testmerged.etl
    

Просмотр данных TraceLogging с помощью WPA

В настоящее время WPA — это единственное средство просмотра, которое можно использовать для просмотра ETL-файлов, создаваемых TraceLogging.

  1. Запустите WPA.

    <path to wpr>\wpa.exe
    
  2. Загрузите файл трассировки (.etl).

  3. Просмотр событий поставщика. В Обозреватель Graph разверните узел Системное действие.

  4. Дважды щелкните универсальные события , чтобы просмотреть их в представлении Анализ.

  5. В представлении Анализ найдите события от поставщика, чтобы убедиться, что ведение журнала работает.

    В столбце Имя поставщика таблицы Универсальные события найдите и выберите строку с именем поставщика.

    Вы можете щелкнуть заголовок столбца для сортировки по имени столбца, что может упростить поиск поставщика. Найдя поставщика, щелкните имя правой кнопкой мыши и выберите Фильтр по выбору.