15

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

我有一个基本的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 Performance Recorder (WPR) 进行录制时,我在 Windows Performance Analyzer (WPA) 的通用事件图中看不到我的提供程序或事件。

谢谢你的时间 :)

4

2 回答 2

2

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

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

根据我的经验EventSource,WPA 8.1 版本中的某些功能没有得到很好的支持。例如,如果您使用任务,它们将无法正确显示。但是,EventSource当您为EventSource.

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

于 2013-12-30T16:47:01.383 回答
1

WPR 和 WPA 不支持 EventSource,但使用新的 8.1 ADK。见这里

于 2013-12-30T15:45:50.360 回答