다음을 통해 공유


빠른 시작: 첫 번째 추적 작업

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

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

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

필수 조건

Visual Studio 2019

TraceProcessing NuGet 패키지 설치

.NET TraceProcessing은 다음 패키지 ID로 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 성능 레코더 를 사용하여 추적 파일을 만들 수 있습니다.

  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와 그것이 액세스할 수 있는 다른 데이터 원본을 자세히 살펴보는 것입니다.