다음을 통해 공유


빠른 시작: 첫 번째 추적 처리

ETW(Windows용 이벤트 추적) 추적의 데이터에 액세스하는 데 TraceProcessor를 사용해보세요. TraceProcessor를 사용하면 ETW 추적 데이터를 .NET 개체로 액세스할 수 있습니다.

이 빠른 시작에서는 다음 방법을 알아봅니다.

  1. TraceProcessing NuGet 패키지를 설치합니다.
  2. TraceProcessor를 만듭니다.
  3. TraceProcessor를 사용하여 추적에 포함된 프로세스 명령줄에 액세스합니다.

필수 조건

Visual Studio 2019

TraceProcessing NuGet 패키지 설치

.NET TraceProcessing은 NuGet에서 다음 패키지 ID로 사용할 수 있습니다.

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 및 TraceProcessor가 액세스할 수 있는 다른 데이터 원본을 자세히 살펴봅니다.