Использование событий «Трассировка событий для Windows» - PullRequest
6 голосов
/ 05 марта 2010

Ответ на этот вопрос заставил меня задуматься об использовании «Event Tracing for Windows» для наших потребностей в трассировке. Я сталкивался с NTrace , который, кажется, является хорошим способом для генерации событий ETW из кода C # (с использованием XP-совместимой модели «классического провайдера»).

Однако я не могу найти простой способ потреблять этих событий - просматривать их в реальном времени и / или записывать в файл. Единственный способ, который я нашел, описан в документации NTrace: использовать инструмент, который доступен только в составе Windows DDK.

В случае сложной проблемы в поле нам, возможно, потребуется попросить пользователя создать файл, содержащий трассировку. Мы не можем просить пользователей загрузить DDK или выполнить ряд сложных операций, чтобы сделать это.

Существует ли простой и удобный способ записи событий ETW в файл?

Кроме того, может ли кто-то использовать события ETW в Windows Vista / 7, если они не работают от имени администратора?

Ответы [ 5 ]

3 голосов
/ 08 марта 2010

TraceView - это самое простое из готовых решений, но можно написать свой собственный просмотрщик ETW, соответствующий вашему провайдеру.Это дало бы вам полный контроль над презентацией и упростило бы ее для конечного пользователя, поскольку TraceView действительно больше инструмент отладки, чем то, что вы можете попросить конечных пользователей запустить.

Что касается трассировки в реальном времениидет, в соответствии с документацией :

Только пользователи с правами администратора, пользователи в группе «Пользователи системного журнала» и службы, работающие как LocalSystem, LocalService, NetworkService, могут принимать события в реальном времени.время.Чтобы предоставить ограниченному пользователю возможность использовать события в режиме реального времени, добавьте их в группу «Пользователи журнала производительности».

Windows XP и Windows 2000: любой может использовать события в реальном времени.

Если вы заинтересованы в написании своего собственного средства просмотра ETW (в режиме реального времени или в файле журнала), вот соответствующая документация .

3 голосов
/ 05 марта 2010

Журнал событий Windows считывает ETW. На самом деле, я бы сказал, что это правильный путь для потребителя (не программы) для просмотра и экспорта следов ETW.

Смотрите здесь для примера. http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

Этот вопрос на msdn Не согласен с тем, что делать, если журналы не отображаются. Здесь что-нибудь помогает?

2 голосов
/ 19 марта 2010

Трассировка ETW была разработана для запуска только администраторами, поскольку трассировка может содержать личную информацию. И это будет представлять угрозу безопасности, если не администратор сможет отследить трассировку.

Вот пример предупреждения от xperf

Трасса, которую вы только что записали, "C: \ Windows \ system32 \ kernel.etl" может содержать информация, позволяющая установить личность, включая, но не обязательно, пути доступа к файлам, пути доступа к реестру и имена процессов. Точная информация зависит от событий, которые были зарегистрированы. Пожалуйста, помните об этом, когда делитесь этим следом с другими людьми.

Надеюсь, что это отвечает на ваш вопрос

1 голос
/ 07 августа 2011

IMO Perfview - один из лучших инструментов, доступных для контроля и просмотра трассировок ETW.Он также может предоставлять управляемые стеки вызовов.Самое приятное то, что вы можете скопировать на любой сервер и собрать следы.

Perfview использует библиотеку TraceEvent, а здесь samples , как вы можете использовать ее с помощью API и C #

1 голос
/ 02 апреля 2010

Вот как вы можете получить пользовательские трассировки ETW от собственного пользовательского провайдера и как ETW можно использовать в управляемом коде

Надеюсь, это поможет.

...