Как вы просматриваете события ETW, созданные EventSource, с помощью анализатора производительности Windows? - программирование
Подтвердить что ты не робот

Как вы просматриваете события ETW, созданные EventSource, с помощью анализатора производительности Windows?

Я хотел бы запускать события ETW с помощью EventSource и просматривать их с помощью анализатора производительности 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 Performance Recorder (WPR), я не вижу своего провайдера или события в графе общих событий анализатора производительности Windows (WPA).

Спасибо за ваше время:)

4b9b3361

Ответ 1

WPR ничего не знает о вашем пользовательском EventSource, поэтому вам нужно создать профиль записи, чтобы вы могли его активировать. WPT поставляется с несколькими образцами профайлов, которые должны помочь вам приступить к работе.

Версия WPR версии 8.1 поддерживает такое же соглашение об именах, что и PerfView, что означает, что вы можете использовать *YourEventSource вместо GUID в профиле.

По моему опыту некоторые из функций EventSource не очень хорошо поддерживаются в версии WPA 8.1. Например. если вы используете задачи, они не будут отображаться правильно. Однако основное использование EventSource хорошо работает с версией WPA/WPR версии 8.1 при создании профиля записи для вашего EventSource.

Другой вариант - собрать трассировку с помощью PerfView и проанализировать ее с помощью WPA (если вы предпочитаете PerfView).

Ответ 3

WPR и WPA не поддерживают EventSource, но работают с новым 8.1 ADK. См. здесь.