【问题标题】:How do you view ETW events created by EventSource using Windows Performance Analyzer?如何使用 Windows 性能分析器查看 EventSource 创建的 ETW 事件?
【发布时间】:2013-01-02 21:57:28
【问题描述】:

我想使用EventSource 触发 ETW 事件并使用 Windows 性能分析器查看它们。

我有一个基本的EventSource

[EventSource(Name = "BasicEventSource")]
public class ETWLogger : EventSource
{
#if DEBUG
    private const bool ThrowOnError = true;
#else
    private const bool ThrowOnError = false;
#endif

    private ETWLogger(bool throwOnError) : base(throwOnError) { }

    private static ETWLogger _log;
    public static ETWLogger Log
    { get { return _log ?? (_log = new ETWLogger(ThrowOnError)); } }

    private static class Keywords
    {
        public const EventKeywords Perf = (EventKeywords) 1;
    }

    [Event(1, Keywords = Keywords.Perf, Level = EventLevel.Informational)]
    public void Startup() { WriteEvent(1, "StartUp"); }
}

当我使用 Windows 性能记录器 (WPR) 进行记录时,我在 Windows 性能分析器 (WPA) 的通用事件图中看不到我的提供程序或事件。

感谢您的宝贵时间 :)

【问题讨论】:

标签: c# performance etw wpa


【解决方案1】:

WPR 对您的自定义EventSource 一无所知,因此您必须创建一个录制配置文件才能启用它。 WPT 附带了一些示例配置文件,可以帮助您入门。

WPR 8.1 版本支持与 PerfView 相同的命名约定,这意味着您可以使用*YourEventSource 代替配置文件中的 GUID。

根据我的经验,某些EventSource 功能在 8.1 版本的 WPA 中没有得到很好的支持。例如。如果您使用任务,它们将无法正确显示。但是,当您为 EventSource 创建录制配置文件时,EventSource 的基本用法与 8.1 版本的 WPA/WPR 配合良好。

另一种选择是使用 PerfView 收集跟踪并使用 WPA 进行分析(如果您更喜欢 PerfView)。

【讨论】:

  • 我创建了一个配置文件并正在使用 WPR 记录事件。当我在 PerfView 中打开 .etl 文件时,事情看起来与我预期的一样。但是,当我在 WPA 中打开 .etl 文件时,我看到的是指南而不是我的事件源名称和数字,而不是我的事件名称。这是预期的吗?
【解决方案2】:

WPR 和 WPA 不支持 EventSource,但支持新的 8.1 ADK。见here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多