如何使用Windows性能分析器查看EventSource创建的ETW事件?
本文关键字:创建 ETW 事件 EventSource Windows 何使用 性能 分析器 | 更新日期: 2023-09-27 17:54:19
我想使用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)的通用事件图中看不到我的提供者或事件。
谢谢你的时间:)
WPR不知道任何关于您的自定义EventSource
,所以您必须创建一个记录配置文件,以便您可以启用它。WPT附带了几个样例配置文件,可以帮助您入门。
8.1版本的WPR支持与PerfView相同的命名约定,这意味着您可以在配置文件中使用*YourEventSource
而不是GUID。
根据我的经验,在WPA的8.1版本中,EventSource
的一些特性没有得到很好的支持。例如,如果你使用任务,它们将不会正确显示。但是,当您为EventSource
创建记录配置文件时,EventSource
的基本用法与8.1版本的WPA/WPR配合良好。
另一种选择是使用PerfView收集跟踪并使用WPA进行分析(如果您喜欢WPA而不是PerfView)。
WPR和WPA不支持EventSource,但支持新的8.1 ADK。看到这里。