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 LoaderKeywordje , 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, DCDCStartDCEndkteré 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.

  1. 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.

  2. 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.

  3. Vypněte všechny profilace Trasování událostí pro Windows:

    xperf -stop clrRundown
    xperf -stop clr  
    
  4. 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.

Viz také