共用方式為


快速入門:處理第一個追踪

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

在本快速入門中,您將瞭解如何:

  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 和其他能夠存取的數據源。