試用 TraceProcessor 以存取 Windows 事件追蹤 (ETW) 追蹤中的數據。 TraceProcessor 可讓您以 .NET 物件身分存取 ETW 追蹤數據。
在本快速入門中,您將瞭解如何:
- 安裝 TraceProcessing NuGet 套件。
- 建立 TraceProcessor。
- 使用 TraceProcessor 存取追蹤中包含的進程命令行。
先決條件
Visual Studio 2019
安裝 TraceProcessing NuGet 套件
.NET TraceProcessing 可從 NuGet 取得,套件 ID 如下:
Microsoft.Windows.EventTracing.Processing.All
您可以在主控台應用程式中使用此套件來列出 ETW 追蹤中所包含的行程命令列(.etl 檔案)。
建立新的 .NET 主控台應用程式。 在 Visual Studio 中,選取 [檔案]、[新增]、[專案...],然後選擇 C# 的控制台應用程式範本。
輸入項目名稱,例如 TraceProcessorQuickstart,然後選擇 [建立]。
在 [方案總管] 中,以滑鼠右鍵點選 [相依性],然後選擇 [管理 NuGet 套件...],並切換至 [瀏覽] 索引標籤。
在 [搜尋] 方塊中,輸入 Microsoft.Windows.EventTracing.Processing.All 並搜尋。
選取該名稱的 NuGet 套件來進行安裝,然後關閉 NuGet 視窗。
建立 TraceProcessor
將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"); } } }提供執行專案時要使用的追蹤名稱。
在 [方案總管] 中,以滑鼠右鍵按兩下專案,然後選擇 [屬性]。 切換至 [偵錯] 索引標籤,然後在應用程式參數中輸入追蹤 (.etl 檔案) 的路徑。
如果您還沒有追蹤檔案,您可以使用 Windows Performance Recorder 來建立一個。
執行應用程式。
選擇 [偵錯],[啟動但不偵錯] 以執行您的程式碼。
使用 TraceProcessor 存取追蹤中包含的進程命令行
將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); } } } }再次執行應用程式。
這次,您應該會看到在追蹤記錄期間執行的所有進程的命令列清單。
後續步驟
在本快速入門中,您已建立控制台應用程式、已安裝 TraceProcessor,並用它來從 ETW 追蹤存取處理程式命令行。 現在您有可存取追蹤資料的應用程式。
進程資訊只是應用程式可存取之 ETW 追蹤中儲存的許多資料類型之一。
下一個步驟是仔細查看 TraceProcessor 和其他能夠存取的數據源。