Как просмотреть события 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 Performance Analyzer (WPA).
Спасибо за ваше время :)
3 ответов
WPR ничего не знает о вашем обычае EventSource
, поэтому вам нужно создать профиль записи, чтобы вы могли его включить. WPT поставляется с несколькими образцами профилей, которые должны помочь вам начать работу.
версия 8.1 WPR поддерживает то же соглашение об именах, что и PerfView, что означает, что вы можете использовать *YourEventSource
вместо GUID в профиле.
по моему опыту некоторые EventSource
функции не поддерживаются в версии 8.1 WPA. Е. Г. если вы используете задачи, которые они не будут отображаться правильно. Однако, основное использование EventSource
хорошо работает с версией 8.1 WPA / WPR при создании профиля записи для вашего EventSource
.
другой вариант-собрать трассировку с помощью PerfView и проанализировать ее с помощью WPA (если вы предпочитаете это PerfView).
зацените демо-уроке. Также можно найти еще одну демо-версию здесь, начало 00:38: 39.
WPR и WPA не поддерживают EventSource, но делают с новым 8.1 ADK. См.здесь.