Poskytovatelé CLR ETW
Modul CLR (Common Language Runtime) má dva zprostředkovatele: zprostředkovatele modulu runtime a zprostředkovatele rundownu.
Zprostředkovatel modulu runtime vyvolává události v závislosti na tom, která klíčová slova (kategorie událostí) jsou povolená. Například můžete shromažďovat události zavaděče povolením klíčového LoaderKeyword
slova .
Události Trasování událostí pro Windows (ETW) se protokolují do souboru s příponou .etl, který lze později podle potřeby následně zpracovat v souborech s hodnotami oddělenými čárkami (.csv). Informace o tom, jak převést soubor .etl na .csv soubor, naleznete v tématu Řízení protokolování rozhraní .NET Framework.
Zprostředkovatel modulu runtime
Zprostředkovatel modulu runtime je hlavním zprostředkovatelem CLR ETW.
Identifikátor GUID zprostředkovatele modulu runtime CLR je e13c0d23-ccbc-4e12-931b-d9cc2eee27e4.
Příklady protokolování a zobrazení událostí CLR ETW pomocí běžně dostupných nástrojů najdete v tématu Řízení protokolování rozhraní .NET Framework.
Kromě použití klíčových slov, jako LoaderKeyword
je , možná budete muset povolit klíčová slova pro protokolování událostí, které mohou být vyvolány příliš často. Klíčová StartEnumerationKeyword
slova a EndEnumerationKeyword
tyto události umožňují a jsou shrnuty v klíčovém slovu a úrovních Trasování událostí pro Windows CLR.
Zprostředkovatel rundownu
Zprostředkovatel rundownu musí být zapnutý pro určité speciální účely. Pro většinu uživatelů by však měl stačit poskytovatel modulu runtime.
Identifikátor GUID zprostředkovatele modulu CLR je A669021C-C450-4609-A035-5AF59AF4DF18.
Protokolování Trasování událostí pro Windows se obvykle povolí před spuštěním procesu a po ukončení procesu se vypne. Pokud je však protokolování Trasování událostí pro Windows během provádění procesu zapnuté, jsou o procesu potřeba další informace. Například pro rozlišení symbolů musíte protokolovat události metody pro metody, které byly již načteny před zapnutím protokolování.
Události DCStart
a DCEnd
zaznamenávají stav procesu při spuštění a zastavení shromažďování dat. (Stav odkazuje na informace na vysoké úrovni, včetně metod, které již byly zkompilovány podle potřeby (JIT), a sestavení, která byla načtena.) Tyto dvě události mohou poskytnout informace o tom, co se již stalo v procesu; například které metody byly zkompilovány podle potřeby atd.
Pod poskytovatelem rundownu jsou vyvolány pouze události, DC
DCStart
DCEnd
které mají , , nebo DCInit
v jejich názvech. Kromě toho jsou tyto události vyvolány pouze pod zprostředkovatelem rundownu.
Kromě filtrů klíčových slov události podporuje StartRundownKeyword
zprostředkovatel rundownu také klíčová slova a EndRundownKeyword
k poskytování cíleného filtrování.
Spustit rundown
Spuštění spuštění se aktivuje, když je protokolování pod poskytovatelem rundownu povolené pomocí klíčového StartRundownKeyword
slova . To způsobí DCStart
vyvolání události a zaznamenává stav systému. Před zahájením výčtu DCStartInit
je vyvolána událost. Na konci výčtu je vyvolána událost, která oznámí kontroleru, DCStartComplete
že shromažďování dat bylo normálně ukončeno.
Ukončit běh
Koncové spuštění se aktivuje, když je protokolování pod poskytovatelem rundownu povolené pomocí klíčového EndRundownKeyword
slova . End rundown zastaví profilaci u procesu, který se bude dál spouštět. Události DCEnd
zachycují stav systému při zastavení profilace.
Před zahájením výčtu DCEndInit
je vyvolána událost. Na konci výčtu je vyvolána událost, která příjemci oznámí, DCEndComplete
že shromažďování dat bylo normálně ukončeno. Počáteční a koncový rundown se primárně používají k rozlišení spravovaných symbolů. Spustit rundown může poskytnout informace o rozsahu adres pro metody, které byly již zkompilovány JIT před spuštěním relace profilace. End rundown může poskytovat informace o rozsahu adres pro všechny metody, které byly zkompilovány jit, když se profilace má vypnout.
Ukončení spuštění neproběhne automaticky, když je relace profilace zastavena. Místo toho musí nástroj, který se snaží provést překlad spravovaných symbolů, explicitně vyvolat relaci rundown zprostředkovatele CLR s povoleným klíčovým slovem EndRundownKeyword
těsně před zastavením profilace.
I když počáteční nebo koncový rundown mohou poskytovat informace o rozsahu adres metod pro řešení spravovaných symbolů, doporučujeme místo klíčového StartRundownKeyword
slova (které poskytuje DCStart
události) použít EndRundownKeyword
klíčové slovo (které poskytuje DCEnd
události). Použití StartRundownKeyword
způsobí, že během relace profilace dojde k běhu, což může profilovaný scénář narušit.
Shromažďování dat Trasování událostí pro Windows s využitím zprostředkovatelů modulu runtime a rundownu
Následující příklad ukazuje, jak použít zprostředkovatele modulu CLR rundown způsobem, který umožňuje rozlišení symbolů spravovaných procesů s minimálním dopadem, bez ohledu na to, zda procesy začínají nebo končí uvnitř nebo vně profilovaného okna.
Zapněte protokolování Trasování událostí pro Windows pomocí zprostředkovatele modulu runtime CLR:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
Protokol se uloží do souboru clr1.etl.
Pokud chcete zastavit profilaci v průběhu procesu, spusťte zprostředkovatele rundownu
DCEnd
a zachyťte události:xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
To umožňuje shromažďování událostí
DCEnd
spustit rundown relaci. Možná budete muset počkat 30 až 60 sekund, než se shromáždí všechny události. Protokol se uloží do souboru clr1.et2.Vypněte všechny profilace Trasování událostí pro Windows:
xperf -stop clrRundown xperf -stop clr
Sloučením profilů vytvořte jeden soubor protokolu:
xperf -merge clr1.etl clr2.etl merged.etl
Soubor merged.etl bude obsahovat události z modulu runtime a relace zprostředkovatele rundown.
Nástroj může provést kroky 2 a 3 (spuštění relace spuštění a následné ukončení profilace) namísto okamžitého vypnutí profilace, když uživatel požádá o zastavení profilace. Nástroj může také provést krok 4.