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


Краткое руководство: обработка первой трассировки

Попробуйте использовать TraceProcessor для доступа к данным в трассировке событий для Windows (ETW). TraceProcessor позволяет получить доступ к данным трассировки ETW в виде объектов .NET.

В этом кратком руководстве вы узнаете, как:

  1. Установите пакет NuGet TraceProcessing.
  2. Создайте TraceProcessor.
  3. Используйте TraceProcessor для доступа к командным строкам процесса, содержащимся в трассировке.

Предпосылки

Visual Studio 2019

Установка пакета NuGet TraceProcessing

.NET TraceProcessing доступен из NuGet со следующим идентификатором пакета:

Microsoft.Windows.EventTracing.Processing.All

Этот пакет можно использовать в консольном приложении для перечисления команд обработки, содержащихся в трассировке ETW (ETL-файл).

  1. Создайте консольное приложение .NET. В Visual Studio выберите "Файл", "Создать", "Проект", а затем выберите шаблон консольного приложения для C#.

    Введите имя проекта, например TraceProcessorQuickstart, и нажмите кнопку "Создать".

  2. В обозревателе решений щелкните правой кнопкой мыши на пункте "Зависимости" и выберите "Управление пакетами NuGet...", а затем перейдите на вкладку "Обзор".

  3. В поле поиска введите Microsoft.Windows.EventTracing.Processing.All и выполните поиск.

    Выберите "Установить" в пакете NuGet с таким именем и закройте окно NuGet.

Создание объекта TraceProcessor

  1. Измените Program.cs на следующее содержимое:

    using Microsoft.Windows.EventTracing;
    using Microsoft.Windows.EventTracing.Processes;
    using System;
    
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.Error.WriteLine("Usage: <trace.etl>");
                return;
            }
    
            using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
            {
                // TODO: call trace.Use...
    
                trace.Process();
    
                Console.WriteLine("TODO: Access data from the trace");
            }
        }
    }
    
  2. Укажите имя трассировки, используемое при запуске проекта.

    В обозревателе решений щелкните проект правой кнопкой мыши и выберите "Свойства". Перейдите на вкладку "Отладка" и введите путь к файлу трассировки (.etl) в поле "Аргументы приложения".

    Если у вас еще нет файла трассировки, вы можете использовать Windows Performance Recorder для его создания.

  3. Запустите приложение.

    Выберите "Отладка", "Начать без отладки", чтобы запустить код.

Использование TraceProcessor для доступа к командным строкам процесса, содержащимся в трассировке

  1. Измените Program.cs на следующее содержимое:

    using Microsoft.Windows.EventTracing;
    using Microsoft.Windows.EventTracing.Processes;
    using System;
    
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.Error.WriteLine("Usage: <trace.etl>");
                return;
            }
    
            using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
            {
                IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();
    
                trace.Process();
    
                IProcessDataSource processData = pendingProcessData.Result;
    
                foreach (IProcess process in processData.Processes)
                {
                    Console.WriteLine(process.CommandLine);
                }
            }
        }
    }
    
  2. Снова запустите приложение.

    На этот раз вы должны увидеть список командных строк всех процессов, которые выполнялись во время записи трассировки.

Дальнейшие шаги

В этом кратком руководстве вы создали консольное приложение, установили TraceProcessor и использовали его для доступа к командным строкам процессов из трассировки ETW. Теперь у вас есть приложение, которое получает доступ к данным трассировки.

Сведения о процессе — это только один из многих типов данных, хранящихся в трассировке ETW, к которым может получить доступ ваше приложение.

Следующим шагом является более подробно ознакомиться с TraceProcessor и другими источниками данных, к которым он может получить доступ.