CLR ETW-providers
De COMMON Language Runtime (CLR) heeft twee providers: de runtime-provider en de rundown-provider.
De runtimeprovider genereert gebeurtenissen, afhankelijk van welke trefwoorden (categorieën gebeurtenissen) zijn ingeschakeld. U kunt bijvoorbeeld laadprogramma-gebeurtenissen verzamelen door het LoaderKeyword
trefwoord in te schakelen.
Gebeurtenistracering voor Windows (ETW) gebeurtenissen worden aangemeld in een bestand met de extensie .etl, die later kan worden verwerkt in door komma's gescheiden waarden (.csv) bestanden indien nodig. Zie Logboekregistratie beheren .NET Framework voor meer informatie over het converteren van het ETL-bestand naar een .csv-bestand.
De runtimeprovider
De runtime-provider is de belangrijkste CLR ETW-provider.
De GUID van de CLR-runtimeprovider is e13c0d23-ccbc-4e12-931b-d9cc2eee27e4.
Zie Beheer van .NET Framework logboekregistratie voor voorbeelden van het registreren en weergeven van CLR ETW-gebeurtenissen met behulp van veelgebruikte hulpprogramma's.
Naast het gebruik van trefwoorden zoals LoaderKeyword
, moet u mogelijk trefwoorden inschakelen voor het vastleggen van gebeurtenissen die te vaak worden gegenereerd. De StartEnumerationKeyword
trefwoorden en EndEnumerationKeyword
maken deze gebeurtenissen mogelijk en worden samengevat in CLR ETW-trefwoorden en -niveaus.
De rundown-provider
De rundown-provider moet zijn ingeschakeld voor bepaalde speciale doeleinden. Voor een meerderheid van de gebruikers moet de runtimeprovider echter voldoende zijn.
De GUID van de CLR-rundownprovider is A669021C-C450-4609-A035-5AF59AF4DF18.
Normaal gesproken wordt ETW-logboekregistratie ingeschakeld voordat een proces wordt gestart en wordt de logboekregistratie uitgeschakeld nadat het proces is afgesloten. Als ETW-logboekregistratie echter is ingeschakeld terwijl het proces wordt uitgevoerd, is aanvullende informatie over het proces nodig. Voor symboolomzetting moet u bijvoorbeeld methodegebeurtenissen vastleggen voor methoden die al zijn geladen voordat logboekregistratie werd ingeschakeld.
Met de DCStart
gebeurtenissen en DCEnd
wordt de status van het proces vastgelegd wanneer het verzamelen van gegevens is gestart en gestopt. (Status verwijst naar informatie op een hoog niveau, met inbegrip van de methoden die al just-in-time (JIT) zijn gecompileerd en assembly's die zijn geladen.) Deze twee gebeurtenissen kunnen informatie geven over wat er al is gebeurd in het proces; bijvoorbeeld welke methoden zijn gecompileerd met JIT, enzovoort.
Alleen de gebeurtenissen met DC
, DCStart
, DCEnd
of DCInit
in hun naam worden gegenereerd onder de rundown-provider. Bovendien worden deze gebeurtenissen alleen gegenereerd onder de rundown-provider.
Naast de trefwoordfilters voor gebeurtenissen ondersteunt de rundown-provider ook de StartRundownKeyword
trefwoorden en EndRundownKeyword
om gerichte filters te bieden.
Rundown starten
Een startrundown wordt geactiveerd wanneer logboekregistratie onder de rundown-provider is ingeschakeld met het StartRundownKeyword
trefwoord. Hierdoor wordt de DCStart
gebeurtenis gegenereerd en wordt de status van het systeem vastgelegd. Vóór het begin van de opsomming wordt de DCStartInit
gebeurtenis gegenereerd. Aan het einde van de opsomming wordt de DCStartComplete
gebeurtenis gegenereerd om de controller ervan op de hoogte te stellen dat het verzamelen van gegevens normaal is beëindigd.
Einderundown
Een einderundown wordt geactiveerd wanneer logboekregistratie onder de rundown-provider is ingeschakeld met het EndRundownKeyword
trefwoord. Einde rundown stopt profileren voor een proces dat nog steeds wordt uitgevoerd. De DCEnd
gebeurtenissen leggen de status van het systeem vast wanneer profilering wordt gestopt.
Vóór het begin van de opsomming wordt de DCEndInit
gebeurtenis gegenereerd. Aan het einde van de opsomming wordt de DCEndComplete
gebeurtenis gegenereerd om de consument ervan op de hoogte te stellen dat het verzamelen van gegevens normaal is beëindigd. Rundown starten en einderundown worden voornamelijk gebruikt voor de resolutie van beheerde symbolen. Start rundown kan informatie over het adresbereik bieden voor methoden die al met JIT waren gecompileerd voordat de profileringssessie werd gestart. End rundown kan informatie over het adresbereik bieden voor alle methoden die met JIT zijn gecompileerd wanneer profilering op het punt staat te worden uitgeschakeld.
Einderundown vindt niet automatisch plaats wanneer een profileringssessie wordt gestopt. In plaats daarvan moet een hulpprogramma dat beheerde symboolomzetting probeert uit te voeren, expliciet een CLR-rundownprovidersessie aanroepen met het EndRundownKeyword
trefwoord ingeschakeld, net voordat profilering wordt gestopt.
Hoewel beginrundown of einderundown gegevens over het adresbereik van de methode kunnen bieden voor de resolutie van beheerde symbolen, raden we u aan het EndRundownKeyword
trefwoord (waarmee DCEnd
gebeurtenissen worden geleverd) te gebruiken in plaats van het StartRundownKeyword
trefwoord (waarmee DCStart
gebeurtenissen worden geleverd). Als u het StartRundownKeyword
gebruikt, wordt de rundown uitgevoerd tijdens de profileringssessie, waardoor het geprofileerde scenario kan worden verstoord.
ETW-gegevensverzameling met runtime- en rundownproviders
In het volgende voorbeeld ziet u hoe u de CLR rundown-provider kunt gebruiken op een manier die symboolomzetting van beheerde processen met minimale impact mogelijk maakt, ongeacht of de processen binnen of buiten het geprofileerde venster beginnen of eindigen.
Etw-logboekregistratie inschakelen met behulp van de CLR-runtimeprovider:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
Het logboek wordt opgeslagen in het bestand clr1.etl.
Als u de profilering wilt stoppen terwijl het proces wordt uitgevoerd, start u de rundown-provider om de
DCEnd
gebeurtenissen vast te leggen:xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
Hierdoor kan het verzamelen van
DCEnd
gebeurtenissen een rundown-sessie starten. Mogelijk moet u 30 tot 60 seconden wachten voordat alle gebeurtenissen zijn verzameld. Het logboek wordt opgeslagen in het bestand clr1.et2.Schakel alle ETW-profilering uit:
xperf -stop clrRundown xperf -stop clr
Voeg de profielen samen om één logboekbestand te maken:
xperf -merge clr1.etl clr2.etl merged.etl
Het bestand merged.etl bevat de gebeurtenissen van de runtime- en rundown-providersessies.
Een hulpprogramma kan stap 2 en 3 uitvoeren (een rundown-sessie starten en vervolgens profileren beëindigen) in plaats van profilering onmiddellijk uit te schakelen wanneer een gebruiker aanvraagt om profilering te stoppen. Een hulpprogramma kan ook stap 4 uitvoeren.