Sdílet prostřednictvím


O trasování událostí

Trasování událostí pro Windows (ETW) je efektivní trasovací zařízení na úrovni jádra, které umožňuje protokolovat události definované jádrem nebo aplikacemi do souboru protokolu. Události můžete využívat v reálném čase nebo ze souboru protokolu a použít je k ladění aplikace nebo k určení, kde v aplikaci dochází k problémům s výkonem.

EtW umožňuje dynamické povolení nebo zakázání trasování událostí, což umožňuje provádět podrobné trasování v produkčním prostředí bez nutnosti restartování počítače nebo aplikace.

Rozhraní API pro trasování událostí je rozdělené na tři různé komponenty:

  • kontrolery, které spouštějí a zastavují relace trasování událostí a umožňují poskytovatelům spouštění konkrétních služeb
  • poskytovatelé, kteří organizují události
  • spotřebitelé, kteří spotřebovávají události

Následující diagram znázorňuje model trasování událostí.

model trasování událostí

Řadiče

Řadiče jsou aplikace, které určují velikost a umístění souboru protokolu, spouštějí a zastavují relace trasování událostí, povolují poskytovatelům zapisovat události do relace, zajišťují správu velikosti fondu vyrovnávací paměti a získávají statistiky provádění relací. Statistika relace zahrnuje počet použitých vyrovnávacích pamětí, počet doručených vyrovnávacích pamětí a počet událostí a vyrovnávacích pamětí, které byly ztraceny.

Další informace najdete v tématu Řízení relací trasování událostí.

Poskytovatelé

Zprostředkovatelé jsou aplikace, které obsahují nástroje pro trasování událostí. Po registraci poskytovatele může kontroler povolit nebo zakázat trasování událostí ve zprostředkovateli. Poskytovatel definuje svou interpretaci stavu, kdy je povoleno nebo zakázáno. Obecně platí, že povolený zprostředkovatel generuje události, zatímco zakázaný zprostředkovatel ne. Díky tomu můžete do aplikace přidat trasování událostí bez nutnosti generovat události po celou dobu.

I když model ETW odděluje kontroler a zprostředkovatele do samostatných aplikací, může aplikace obsahovat obě komponenty.

Další informace naleznete v tématu Poskytování událostí.

Typy poskytovatelů

Existují čtyři hlavní typy poskytovatelů: poskytovatelé MOF (classic), poskytovatelé WPP, poskytovatelé založené na manifestu a zprostředkovatelé TraceLogging. Pokud píšete aplikace pro systém Windows Vista nebo novější, které nepodporují starší systémy, měli byste použít zprostředkovatele založeného na manifestu nebo zprostředkovatele TraceLogging.

Poskytovatelé MOF (classic):

  • K registraci a zápisu událostí použijte funkce RegisterTraceGuids a TraceEvent.
  • Třídy MOF slouží k definování událostí, aby uživatelé věděli, jak je využívat.
  • Je možné povolit pouze jednu relaci trasování najednou.

Poskytovatelé WPP:

  • K registraci a zápisu událostí použijte funkce RegisterTraceGuids a TraceEvent.
  • Existují přidružené soubory TMF (kompilované do binárního souboru PDB) obsahující dekódovací informace odvozené z kontroly preprocesorem skenované WPP instrumentace ve zdrojovém kódu.
  • Je možné povolit pouze jednu relaci trasování najednou.

Zprostředkovatelé založení na manifestu:

  • K registraci a zápisu událostí použijte EventRegister a EventWrite.
  • Pomocí manifestu můžete definovat události, aby uživatelé věděli, jak je využívat.
  • Lze povolit až osm trasovacích relací současně.

Poskytovatelé TraceLogging:

  • K registraci a zápisu událostí použijte TraceLoggingRegister a TraceLoggingWrite.
  • Používejte vlastní popisování událostí, aby samotné události obsahovaly všechny požadované informace pro jejich využívání.
  • Lze povolit až osm trasovacích relací současně.

Všichni poskytovatelé událostí v zásadě používají řadu rozhraní API pro trasování událostí (TraceEvent pro starší technologie a EventWrite/EventWriteEx pro novější). Poskytovatelé událostí se jednoduše liší v typech polí, které ukládají v datových částech událostí a kde ukládají informace o dekódování přidružené události.

Spotřebitelé

Spotřebitelé jsou aplikace, které si jako zdroj událostí vybírají jednu nebo více relací sledování událostí. Příjemce může požadovat události z více relací trasování událostí současně; systém poskytuje události v chronologickém pořadí. Uživatelé mohou přijímat události uložené v souborech protokolu nebo z relací, které doručují události v reálném čase. Při zpracování událostí může příjemce zadat počáteční a koncové časy a doručí se pouze události, ke kterým dochází v zadaném časovém rámci.

Další informace naleznete v tématu Zpracování událostí.

Chybějící události

Nástroj Perfmon, System Diagnostics a další systémové nástroje můžou hlásit chybějící události v protokolu událostí a indikovat, že nastavení trasování událostí pro Windows (ETW) nemusí být optimální. Události můžou být ztraceny z několika důvodů:

  • Celková velikost události je větší než 64K. To zahrnuje hlavičku ETW plus data nebo užitečné zatížení. Uživatel nemá žádnou kontrolu nad těmito chybějícími událostmi, protože aplikace nakonfiguruje velikost události.

  • Velikost vyrovnávací paměti ETW je menší než celková velikost události. Uživatel nemá žádnou kontrolu nad těmito chybějícími událostmi, protože velikost události je nakonfigurována aplikací, která události protokoluje.

  • V případě protokolování v reálném čase uživatel v reálném čase nezbíská události dostatečně rychle nebo není zcela k dispozici a záložní soubor se zaplní. K tomuto může dojít, pokud je služba Protokolu událostí zastavena a poté spuštěna během zaznamenávání událostí. Uživatel nemá žádnou kontrolu nad těmito chybějícími událostmi.

  • Při protokolování do souboru je disk příliš pomalý, aby udržel krok s rychlostí protokolování.

Z některého z těchto důvodů nahlašte tyto problémy poskytovateli aplikace nebo služby, která generuje události. Tyto problémy může opravit jenom vývojář aplikace nebo služba, která události protokoluje. Pokud se chybějící události hlásí ve službě protokolu událostí, může to znamenat problém s konfigurací služby Protokolu událostí. Uživatel může mít omezenou schopnost zvýšit maximální místo na disku, které bude služba protokolu událostí používat, což může snížit počet chybějících událostí.