Dela via


Om händelsespårning

Händelsespårning för Windows (ETW) är en effektiv spårningsfunktion på kernelnivå som gör att du kan logga kernel- eller programdefinierade händelser till en loggfil. Du kan använda händelserna i realtid eller från en loggfil och använda dem för att felsöka ett program eller för att avgöra var prestandaproblem uppstår i programmet.

Med ETW kan du aktivera eller inaktivera händelsespårning dynamiskt, så att du kan utföra detaljerad spårning i en produktionsmiljö utan att behöva starta om datorn eller programmet.

Händelsespårnings-API:et är uppdelat i tre olika komponenter:

  • Controllers, som startar och stoppar en händelsespårningssession och aktiverar leverantörer
  • Providers, som tillhandahåller evenemangen
  • Konsumenter, som konsumerar händelserna

Följande diagram visar händelsespårningsmodellen.

händelsespårningsmodell

Styrenheter

Kontrollanter är program som definierar loggfilens storlek och plats, startar och stoppar händelsespårningssessioner, aktiverar leverantörer så att de kan logga händelser till sessionen, hantera storleken på buffertpoolen och hämta körningsstatistik för sessioner. Sessionsstatistik omfattar antalet buffertar som används, antalet levererade buffertar och antalet förlorade händelser och buffertar.

Mer information, se Kontroll av händelsespårningssessioner.

Leverantörer

Leverantörer är program som innehåller instrumentation för händelsespårning. När en provider har registrerat sig kan en kontrollant sedan aktivera eller inaktivera händelsespårning i providern. Providern definierar sin tolkning av att vara aktiverad eller inaktiverad. I allmänhet genererar en aktiverad provider händelser, medan en inaktiverad provider inte gör det. På så sätt kan du lägga till händelsespårning i ditt program utan att kräva att det genererar händelser hela tiden.

Även om ETW-modellen separerar kontrollanten och providern i separata program kan ett program innehålla båda komponenterna.

För mer information, se Tillhandahållande av händelser.

Typer av leverantörer

Det finns fyra huvudsakliga typer av leverantörer: MOF-leverantörer (klassiska), WPP-leverantörer, manifestbaserade leverantörer och TraceLogging-leverantörer. Du bör använda en manifestbaserad provider eller en spårningsloggningsprovider om du skriver program för Windows Vista eller senare som inte behöver stöd för äldre system.

MOF-leverantörer (klassiska):

  • Använd funktionerna RegisterTraceGuids och TraceEvent för att registrera och skriva händelser.
  • Använd MOF-klasser för att definiera händelser så att konsumenterna vet hur de ska användas.
  • Kan endast aktiveras av en spårningssession i taget.

WPP-leverantörer:

  • Använd funktionerna RegisterTraceGuids och TraceEvent för att registrera och skriva händelser.
  • Ha associerade TMF-filer (kompilerade till en binär .pdb) som innehåller avkodningsinformation som härleds från förprocessorns genomsökning av WPP-instrumentation i källkoden.
  • Kan endast aktiveras av en spårningssession i taget.

Manifest baserade tjänsteleverantörer

  • Använd EventRegister och EventWrite för att registrera och skriva händelser.
  • Använd ett manifest för att definiera händelser så att konsumenterna vet hur de ska konsumeras.
  • Kan möjliggöras av upp till åtta spårningssessioner samtidigt.

TraceLogging providers:

  • Använd TraceLoggingRegister och TraceLoggingWrite för att registrera och skriva händelser.
  • Använd självbeskrivande händelser så att själva händelserna innehåller all nödvändig information för att använda dem.
  • Kan aktiveras av upp till åtta spårningssessioner samtidigt.

Alla händelseprovidrar använder i grunden Event Tracing-serien med API:er (TraceEvent- för äldre tekniker och EventWrite/EventWriteEx- för nyare). Händelseleverantörer skiljer sig helt enkelt åt i vilka fälttyper de lagrar i händelsenyttolaster och var de lagrar den associerade händelsedekodningsinformationen.

Konsumenter

Konsumenter är program som väljer en eller flera händelsespårningssessioner som källa till händelser. En konsument kan begära händelser från flera händelsespårningssessioner samtidigt. systemet levererar händelserna i kronologisk ordning. Konsumenter kan ta emot händelser som lagras i loggfiler eller från sessioner som levererar händelser i realtid. Vid bearbetning av händelser kan en konsument ange start- och sluttider, och endast händelser som inträffar inom den angivna tidsramen levereras.

Mer information finns i Använda händelser.

Händelser som saknas

Perfmon, Systemdiagnostik och andra systemverktyg kan rapportera om saknade händelser i händelseloggen och indikera att inställningarna för händelsespårning för Windows (ETW) kanske inte är optimala. Händelser kan gå förlorade av flera orsaker:

  • Den totala händelsestorleken är större än 64K. Detta inkluderar ETW-huvudet plus datan och nyttolasten. En användare har ingen kontroll över dessa händelser som saknas eftersom händelsestorleken har konfigurerats av programmet.

  • ETW-buffertstorleken är mindre än den totala händelsestorleken. En användare har ingen kontroll över de saknade händelserna eftersom händelsestorleken konfigureras av programmet som loggar händelserna.

  • För realtidsloggning konsumerar realtidskonsumenten inte händelser tillräckligt snabbt eller är helt frånvarande, och då håller loggfilen på att fyllas. Detta kan leda till att händelseloggtjänsten stoppas och startas när händelser loggas. En användare har ingen kontroll över de saknade händelserna.

  • När du loggar till en fil är disken för långsam för att hänga med i loggningsfrekvensen.

Av någon av dessa skäl kan du rapportera dessa problem till leverantören av programmet eller tjänsten som genererar händelserna. Dessa problem kan bara åtgärdas av programutvecklaren eller tjänsten som loggar händelserna. Om de saknade händelserna rapporteras i händelseloggtjänsten kan detta tyda på ett problem med konfigurationen av händelseloggtjänsten. Användaren kan ha vissa begränsade möjligheter att öka det maximala diskutrymme som ska användas av händelseloggtjänsten, vilket kan minska antalet saknade händelser.