快速入門:處理您的第一個追蹤

試用 TraceProcessor 以存取 Windows 事件追蹤 (ETW) 追蹤中的資料。 TraceProcessor 可讓您以 .NET 物件身分存取 ETW 追蹤資料。

在本快速入門中,您已了解如何:

  1. 安裝 TraceProcessing NuGet 套件。
  2. 建立 TraceProcessor。
  3. 使用 TraceProcessor 存取追蹤中包含的程序命令行。

必要條件

Visual Studio 2019

安裝 TraceProcessing NuGet 套件

.NET TraceProcessing 可從 NuGet 取得,其中包含下列套件標識碼:

Microsoft.Windows.EventTracing.Processing.All

您可以在主控台應用程式中使用此套件來列出 ETW 追蹤中所包含的行程命令列 (.etl 檔案)。

  1. 建立一個新的 .NET 控制台應用程式。 在 Visual Studio 中,選擇檔案、新建、專案...,然後選擇 C# 的控制台應用程式範本。

    輸入項目名稱,例如 TraceProcessorQuickstart,然後選擇建立。

  2. 在解決方案 Explorer 中,以滑鼠右鍵按兩下相依性,然後選擇管理 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. 提供執行專案時要使用的追蹤名稱。

    在方案總管中,以滑鼠右鍵按一下專案,然後選擇屬性。 切換至偵錯索引標籤,然後在 Application 自變數中輸入追蹤 (.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 及其可存取的其他資料來源。