快速入门:处理您的第一个跟踪
尝试使用TraceProcessor访问Windows事件跟踪(ETW)跟踪中的数据。TraceProcessor允许您将ETW跟踪数据作为.NET对象访问。
在此快速入门中,您将学习如何:
- 安装TraceProcessing NuGet软件包。
- 创建一个TraceProcessor。
- 使用TraceProcessor访问跟踪中包含的进程命令行。
先决条件
Visual Studio 2019
安装TraceProcessing NuGet软件包
.NET TraceProcessing可从NuGet使用以下程序包ID获得:
Microsoft.Windows.EventTracing.Processing.All
您可以在控制台应用程序中使用此软件包,以列出ETW跟踪(.etl文件)中包含的过程命令行。
- 创建一个新的.NET Core控制台应用程序。在Visual Studio中,选择“文件”,“新建”,“项目…”,然后选择C#的控制台应用程序(.NET Core)模板。
输入项目名称,例如TraceProcessorQuickstart,然后选择创建。
-
在解决方案资源管理器中,右键单击Dependencies,然后选择Manage NuGet Packages …,然后切换到Browse选项卡。
-
在“搜索”框中,输入Microsoft.Windows.EventTracing.Processing.All并进行搜索。
选择具有该名称的NuGet软件包上的Install,然后关闭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及其可以访问的其他数据源。