创建第一个Windows事件跟踪(ETW)

快速入门:处理您的第一个跟踪

尝试使用TraceProcessor访问Windows事件跟踪(ETW)跟踪中的数据。TraceProcessor允许您将ETW跟踪数据作为.NET对象访问。

在此快速入门中,您将学习如何:

  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 Core控制台应用程序。在Visual Studio中,选择“文件”,“新建”,“项目…”,然后选择C#的控制台应用程序(.NET Core)模板。

输入项目名称,例如TraceProcessorQuickstart,然后选择创建。

  1. 在解决方案资源管理器中,右键单击Dependencies,然后选择Manage NuGet Packages …,然后切换到Browse选项卡。

  2. 在“搜索”框中,输入Microsoft.Windows.EventTracing.Processing.All并进行搜索。

选择具有该名称的NuGet软件包上的Install,然后关闭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");
        }
    }
}
  1. 提供运行项目时要使用的跟踪名称。
    在解决方案资源管理器中,右键单击该项目,然后选择“属性”。切换到“调试”选项卡,然后在“应用程序”参数中输入跟踪的路径(.etl文件)。
    如果还没有跟踪文件,则可以使用Windows Performance Recorder创建一个跟踪文件。

  2. 运行应用程序。
    选择“调试”,“开始而不调试”来运行代码。

使用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);
            }
        }
    }
}
  1. 再次运行该应用程序。
    这次,您应该在记录跟踪时看到正在执行的所有进程的列表命令行。

下一步

在此快速入门中,您创建了一个控制台应用程序,安装了TraceProcessor,并使用它来从ETW跟踪中访问进程命令行。现在,您有了一个访问跟踪数据的应用程序。

流程信息只是应用程序可以访问的ETW跟踪中存储的多种数据中的一种。

下一步是仔细查看TraceProcessor及其可以访问的其他数据源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>