存取追蹤資料
.NET TraceProcessing 可從 NuGet 取得,其中包含下列套件標識碼:
Microsoft.Windows.EventTracing.Processing.All
此套件可讓您存取追蹤檔案中的資料。 如果您還沒有追蹤檔案,您可以使用 Windows Performance Recorder 來建立一個。
以下範例控制台應用程式顯示如何存取追蹤中包含的所有程序的命令列:
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
若要處理追蹤,請呼叫 TraceProcessor.Create。 核心介面是 ITraceProcessor,而使用此介面牽涉到下列模式:
- 首先,告訴處理器您想要從追蹤使用哪些資料
- 第二,處理追蹤和
- 最後,存取結果。
告知處理器您想要的前置資料種類,表示您不需要花時間處理大量可能的各種追蹤資料。 相反地,TraceProcessor 只會執行提供您要求的特定資料類型所需的工作。
建議的專案設定
我們建議搭配 TraceProcessor 使用幾個專案設定:
我們建議以 64 位元的身分執行 exe。
新 C# .NET Framework 控制台應用程式的 Visual Studio 預設值是選取首選 32 位元的任何 CPU。 .NET 的預設值可能已經有建議的設定。
追蹤處理可能會耗用記憶體,特別是使用較大的追蹤,建議您在使用 TraceProcessor 的 exe 中將平台目標變更為 x64 (或取消偏好 Prefer 32 位元)。 若要變更這些設定,請參閱專案的屬性底下的建置索引標籤。 若要變更所有組態的這些設定,請確定設定下拉式清單已設定為所有設定,而不是目前組態的預設值。
我們建議搭配較新樣式的 PackageReference 模式使用 NuGet,而不是舊版 packages.config 模式。
若要變更新專案的預設,請參閱工具、NuGet 套件管理器、套件管理器設定、套件管理、預設套件管理格式。
內建資料源
.etl 檔案可以在追蹤中擷取許多種類的資料。 請注意,.etl 檔案中的資料取決於擷取追蹤時啟用的提供者。 下列清單顯示 TraceProcessor 提供的追蹤資料種類:
代碼 | 描述 | 相關 WPA 項目 |
---|---|---|
trace.UseClassicEvents() | 提供來自追蹤的傳統 ETW 事件,但不包含架構資訊。 | 通用事件表 (當事件類型為經典或 WPP 時) |
trace.UseConnectedStandbyData() | 提供有關系統進入和退出連接待機的追蹤資料。 | CS 摘要資料表 |
trace.UseCpuIdleStates() | 提供 CPU C 狀態追蹤的資料。 | CPU 閒置狀態資料表 (類型為實際時) |
trace.UseCpuSamplingData() | 根據指令指標的定期取樣,提供 CPU 使用量追蹤的資料。 | CPU 使用量 (取樣) 資料表 |
trace.UseCpuSchedulingData() | 提供 CPU 執行緒排程的追蹤資料,包括內容交換器和就緒執行緒事件。 | CPU 使用量 (精確) 資料表 |
trace.UseDevicePowerData() | 提供裝置 D 狀態追蹤的資料。 | 裝置 DState 資料表 |
trace.UseDirectXData() | 提供有關 DirectX 活動的追蹤資料。 | GPU 使用率資料表 |
traceUseDiskIOData() | 提供有關 Disk I/O 活動的追蹤資料。 | 磁碟使用量資料表 |
trace.UseEnergyEstimationData() | 提供有關來自能源估算引擎的每個程序的估算能源使用量的追蹤資料。 | 能源估算引擎摘要 (依照程序) 資料表 |
trace.UseEnergyMeterData() | 提供來自來自能源計量介面 (EMI) 測量能源使用量的追蹤資料。 | 能源估計引擎 (由 Emi) 資料表 |
trace.UseFileIOData() | 提供有關 File I/O 活動的追蹤資料。 | 檔案 I/O 資料表 |
trace.UseGenericEvents() | 提供來自追蹤的指令清單和 TraceLogging 事件。 | 通用事件表 (當事件類型為 Manifested 或 TraceLogging 時) |
trace.UseHandles() | 提供有關使用中核心程序控制代碼的追蹤的部分資料。 | 處理資料表 |
trace.UseHardFaults() | 提供有關硬式頁面錯誤之追蹤的資料。 | 硬式錯誤資料表 |
trace.UseHeapSnapshots() | 提供有關程序堆積使用量的追蹤資料。 | 堆積快照集資料表 |
trace.UseHypercalls() | 提供追蹤期間發生的 Hyper-V Hypercalls 相關數據。 | |
trace.UseImageSections() | 提供有關影像區段的追蹤資料。 | CPU 使用量 (取樣) 資料表的區段名稱資料行 |
trace.UseInterruptHandlingData() | 提供有關中斷服務例程 (ISR) 和延遲過程呼叫 (DPC) 活動的追蹤資料。 | DPC/ISR 資料表 |
trace.UseMarks() | 提供追蹤中的標記 (加上標籤的時間戳記)。 | 標記資料表 |
trace.UseMemoryUtilizationData() | 提供有關係統總記憶體利用率的追蹤資料。 | 資料表的記憶體使用量 |
trace.UseMetadata() | 提供追蹤中繼資料,而不需進一步處理。 | 系統設定、追蹤和一般 |
trace.UsePlatformIdleStates() | 提供有關系統的目標和實際平台空閒狀態的追蹤資料。 | 平台閒置狀態資料表 |
trace.UsePoolAllocations() | 提供核心集區內存使用量追蹤的資料。 | 池摘要資料表 |
trace.UsePowerConfigurationData() | 提供系統電源設定追蹤的資料。 | 系統設定、電源設定 |
trace.UsePowerDependencyCoordinatorData() | 提供有關有功功率依賴性協調器相位的追蹤資料。 | 通知階段摘要資料表 |
trace.UseProcesses() | 提供追蹤期間使用中程序以及其影像和 PDB 的相關資料。 | 處理資料表;影像資料表;符號中樞 |
trace.UseProcessorCounters() | 從處理器計數器監視器 (PCM) 提供處理器性能計數器值的追蹤資料。 | |
trace.UseProcessorFrequencyData() | 提供有關處理器執行頻率的追蹤資料。 | 處理器頻率資料表 (類型為實際時) |
trace.UseProcessorProfileData() | 提供有關使用中處理器電源設定檔的追蹤資料。 | 處理器設定檔資料表 |
trace.UseProcessorParkingData() | 提供有關哪些處理器已停放或未停放的追蹤資料。 | 處理器駐留狀態資料表 |
trace.UseProcessorParkingLimits() | 提供追蹤的資料,以取得允許的未已啟動處理器數目上限。 | 核心駐留上限狀態資料表 |
trace.UseProcessorQualityOfServiceData() | 提供每個處理器服務品質追蹤的資料。 | 處理器 Qos 類別資料表 |
trace.UseProcessorThrottlingData() | 提供處理器最大頻率節流追蹤的資料。 | 處理器條件約束資料表 |
trace.UseReadyBootData() | 從就緒開機提供有關開機預先擷取活動的追蹤資料。 | 就緒開機事件資料表 |
trace.UseReferenceSetData() | 提供每個程序所使用虛擬記憶體頁面的追蹤資料。 | 參考集表 |
trace.UseRegionsOfInterest() | 提供 xml 組態檔中所指定之追蹤中感興趣間隔的具名區域。 | 感興趣區域資料表 |
trace.UseRegistryData() | 提供追蹤期間登錄活動的相關資料。 | 登錄資料表 |
trace.UseResidentSetData() | 針對位於物理記憶體中的每個程序,提供虛擬記憶體頁面的追蹤資料。 | 常駐集合資料表 |
trace.UseRundownData() | 提供追蹤中有關發生追蹤執行追蹤資料收集的間隔資料。 | 圖形時間軸中的陰影區域 |
trace.UseScheduledTasks() | 提供追蹤期間所執行之排程工作的相關資料。 | 排程的任務資料表 |
trace.UseServices() | 提供在追蹤期間擷取或擷取其狀態之服務的相關資料。 | 服務資料表;系統設定;服務 |
trace.UseStacks() | 提供追蹤期間所記錄堆疊的相關資料。 | |
trace.UseStackEvents() | 提供與追蹤期間所記錄之堆疊相關聯的事件相關資料。 | 堆疊資料表 |
trace.UseStackTags() | 提供對應程式,將追蹤中的堆疊群組成 XML 組態檔中指定的堆疊標記。 | 堆疊標籤和堆疊等資料列 (框架標籤) |
trace.UseSymbols() | 提供載入追蹤符號的功能。 | 設定符號路徑;載入符號 |
trace.UseSyscalls() | 提供追蹤期間發生的 syscalls 相關資料。 | Syscalls 資料表 |
trace.UseSystemMetadata() | 提供追蹤的一般全系統中繼資料。 | 系統設定 |
trace.UseSystemPowerSourceData() | 提供有關使用中系統電源的追蹤資料 (AC 與 DC)。 | 系統電源來源資料表 |
trace.UseSystemSleepData() | 提供有關整體系統電源狀態的追蹤資料。 | 電源轉換資料表 |
trace.UseTargetCpuIdleStates() | 提供目標 CPU C 狀態追蹤的資料。 | CPU 閒置狀態資料表 (類型為目標時) |
trace.UseTargetProcessorFrequencyData() | 提供目標處理器頻率追蹤的資料。 | 處理器頻率資料表 (類型為目標時) |
trace.UseThreads() | 提供追蹤期間使用中執行緒的相關資料。 | 執行緒存留期資料表 |
trace.UseTraceStatistics() | 提供追蹤中事件的相關統計資料。 | 系統設定、追蹤統計資料 |
trace.UseUtcData() | 使用通用遙測用戶端 (UTC) 提供 Microsoft 遙測活動的追蹤資料。 | Utc 資料表 |
trace.UseWindowInFocus() | 提供焦點中作用中 UI 視窗變更的追蹤資料。 | 焦點資料表中的視窗 |
trace.UseWindowsTracePreprocessorEvents() | 提供來自追蹤的 Windows 軟體追蹤預處理器 (WPP) 事件。 | WPP 追蹤資料表;泛型事件資料表 (當事件類型為 WPP 時) |
trace.UseWinINetData() | 透過 Windows Internet (WinINet) 提供有關 Internet 活動的追蹤資料。 | 下載詳細資料表 |
trace.UseWorkingSetData() | 提供有關每個程序或核心類別的工作集中的虛擬記憶體頁的追蹤資料。 | 虛擬記憶體快照表 |
另請參閱 ITraceSource 上的擴充方法,以取得所有可用的追蹤資料,或檢查 IntelliSense 所顯示的「追蹤」中可用的方法。
後續步驟
在本概述中,您了解如何使用 TraceProcessor 及其可以存取的內建資料來源來存取追蹤資料。
下一個步驟是了解如何擴充 TraceProcessor 以存取自定義追蹤資料。