PerfView无法捕获自定义ETW事件

时间:2016-08-04 11:52:14

标签: events etw-eventsource perfview

我有一个演示解决方案,它使用System.Diagnostics.Tracing.EventSource类引发事件。我上课的课程如下: -

[EventSource(Guid = "B6741490-9F53-4620-A45C-49004C1B4444", Name = "DemoEvent")]
sealed public class DemoEventSource : EventSource
{
    [Event(1, Level = EventLevel.LogAlways, Keywords = EventKeywords.None)]
    public void RaiseEvent()
    {
        this.WriteEvent(1, "Found");
    }
}

我按照here给出的步骤使用PerfView工具查看此解决方案生成的事件。我在PerfView的additionalProvider部分中给出了*DemoEvent。但是,我无法在PerfView的输出中看到这些事件。谁能在这帮助我?

1 个答案:

答案 0 :(得分:1)

您的方法的参数类型和您对write事件的调用的参数类型必须匹配(为事件ID添加一个整数第一个参数),以便自动生成的事件源元数据匹配。即。

[Event(1, Level = EventLevel.LogAlways, Keywords = EventKeywords.None)]
public void RaiseEvent(string message)
{
    this.WriteEvent(1, message);
}

避免提供GUID。建议在the Event Source programming guide from the .NET authors中仅提供名称,并从名称中自动生成GUID。

确保使用the latest PerfView release from GitHub而不是Microsoft Downloads上的过时版本。