Udostępnij za pośrednictwem


Dostawcy CLR ETW

Środowisko uruchomieniowe języka wspólnego (CLR) ma dwóch dostawców: dostawcę środowiska uruchomieniowego i dostawcę uruchamiania.

Dostawca środowiska uruchomieniowego zgłasza zdarzenia w zależności od tego, które słowa kluczowe (kategorie zdarzeń) są włączone. Można na przykład zbierać zdarzenia modułu LoaderKeyword ładującego, włączając słowo kluczowe .

Śledzenie zdarzeń systemu Windows (ETW) jest rejestrowane w pliku z rozszerzeniem etl, który można później przetworzyć po przetworzeniu w plikach wartości rozdzielanych przecinkami (.csv). Aby uzyskać informacje na temat konwertowania pliku etl na plik .csv, zobacz Kontrolowanie rejestrowania .NET Framework.

Dostawca środowiska uruchomieniowego

Dostawca środowiska uruchomieniowego jest głównym dostawcą CLR ETW.

Identyfikator GUID dostawcy środowiska uruchomieniowego CLR to e13c0d23-ccbc-4e12-931b-d9cc2ee27e4.

Aby zapoznać się z przykładami rejestrowania i wyświetlania zdarzeń CLR ETW przy użyciu powszechnie dostępnych narzędzi, zobacz Kontrolowanie rejestrowania .NET Framework.

Oprócz używania słów kluczowych, takich jak LoaderKeyword, może być konieczne włączenie słów kluczowych dla zdarzeń rejestrowania, które mogą być wywoływane zbyt często. Słowa StartEnumerationKeyword kluczowe i EndEnumerationKeyword włączają te zdarzenia i są sumowane w słowach kluczowych i poziomach CLR ETW.

Dostawca rundown

Dostawca uruchamiania musi być włączony w przypadku określonych zastosowań specjalnych. Jednak w przypadku większości użytkowników dostawca środowiska uruchomieniowego powinien wystarczyć.

Identyfikator GUID dostawcy uruchamiania CLR to A669021C-C450-4609-A035-5AF59AF4DF18.

Zwykle rejestrowanie ETW jest włączone przed uruchomieniem procesu, a rejestrowanie jest wyłączone po zakończeniu procesu. Jeśli jednak rejestrowanie ETW jest włączone podczas wykonywania procesu, potrzebne są dodatkowe informacje o procesie. Na przykład w przypadku rozpoznawania symboli należy rejestrować zdarzenia metody dla metod, które zostały już załadowane przed włączeniem rejestrowania.

Zdarzenia DCStart i DCEnd przechwytują stan procesu, gdy zbieranie danych zostało uruchomione i zatrzymane. (Stan odnosi się do informacji na wysokim poziomie, w tym metod, które były już skompilowane just in time (JIT) i zestawy, które zostały załadowane. Te dwa zdarzenia mogą dostarczyć informacji o tym, co już się stało w procesie; na przykład, które metody zostały skompilowane w trybie JIT itd.

W ramach dostawcy uruchamiania są wywoływane tylko zdarzenia z elementami DC, DCStart, DCEndlub DCInit w nazwach. Ponadto te zdarzenia są wywoływane tylko w ramach dostawcy uruchamiania.

Oprócz filtrów słów kluczowych zdarzeń dostawca rundown obsługuje StartRundownKeyword również słowa kluczowe i EndRundownKeyword w celu zapewnienia filtrowania docelowego.

Uruchom uruchamianie w znaczników

Uruchamianie uruchamiania jest wyzwalane po włączeniu rejestrowania w ramach dostawcy uruchamiania za pomocą słowa kluczowego StartRundownKeyword . DCStart Powoduje to, że zdarzenie jest zgłaszane i przechwytuje stan systemu. Przed rozpoczęciem wyliczenia DCStartInit jest zgłaszane zdarzenie. Na końcu wyliczenia zdarzenie jest zgłaszane w celu powiadomienia kontrolera, DCStartComplete że zbieranie danych zostało zakończone normalnie.

Zakończenie uruchamiania

Zakończenie uruchamiania jest wyzwalane, gdy rejestrowanie w ramach dostawcy uruchamiania jest włączone za pomocą słowa kluczowego EndRundownKeyword . Zakończenie uruchamiania zatrzymuje profilowanie w procesie, który będzie nadal wykonywany. Zdarzenia DCEnd przechwytują stan systemu podczas zatrzymywania profilowania.

Przed rozpoczęciem wyliczenia DCEndInit jest zgłaszane zdarzenie. Na końcu wyliczenia zdarzenie jest zgłaszane, aby powiadomić konsumenta, DCEndComplete że zbieranie danych zakończyło się normalnie. Uruchamianie uruchamiania i uruchamianie końcowe są używane głównie do rozpoznawania symboli zarządzanych. Uruchamianie uruchamiania może podać informacje o zakresie adresów dla metod, które zostały już skompilowane w trybie JIT przed rozpoczęciem sesji profilowania. Zakończenie uruchamiania może dostarczać informacje o zakresie adresów dla wszystkich metod, które zostały skompilowane w trybie JIT, gdy profilowanie ma zostać wyłączone.

Zakończenie uruchamiania nie odbywa się automatycznie po zatrzymaniu sesji profilowania. Zamiast tego narzędzie, które próbuje wykonać rozpoznawanie symboli zarządzanych, musi jawnie wywołać sesję dostawcy rundown CLR z EndRundownKeyword włączonym słowem kluczowym, tuż przed zatrzymaniem profilowania.

Mimo że uruchamianie uruchamiania lub zakończenie uruchamiania może dostarczyć informacji o zakresie adresów metody do rozpoznawania symboli zarządzanych, zalecamy użycie słowa kluczowego EndRundownKeyword (które dostarcza DCEnd zdarzenia) zamiast słowa kluczowego StartRundownKeyword (które dostarcza DCStart zdarzenia). Użycie StartRundownKeyword przyczyn uruchomienia podczas sesji profilowania, co może zakłócić profilowany scenariusz.

Zbieranie danych ETW przy użyciu środowiska uruchomieniowego i dostawców rundown

W poniższym przykładzie pokazano, jak używać dostawcy uruchamiania CLR w sposób umożliwiający rozpoznawanie symboli procesów zarządzanych przy minimalnym wpływie, niezależnie od tego, czy procesy rozpoczynają się, czy kończą się wewnątrz lub poza profilowanym oknem.

  1. Włącz rejestrowanie ETW przy użyciu dostawcy środowiska uruchomieniowego CLR:

    xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
    

    Dziennik zostanie zapisany w pliku clr1.etl.

  2. Aby zatrzymać profilowanie podczas wykonywania procesu, uruchom dostawcę rundown, aby przechwycić DCEnd zdarzenia:

    xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
    

    Dzięki temu kolekcja zdarzeń DCEnd może rozpocząć sesję uruchamiania. Może być konieczne odczekenie od 30 do 60 sekund na zebranie wszystkich zdarzeń. Dziennik zostanie zapisany w pliku clr1.et2.

  3. Wyłącz wszystkie profilowanie ETW:

    xperf -stop clrRundown
    xperf -stop clr  
    
  4. Scal profile, aby utworzyć jeden plik dziennika:

    xperf -merge clr1.etl clr2.etl merged.etl  
    

    Plik merged.etl będzie zawierać zdarzenia ze środowiska uruchomieniowego i sesji dostawcy uruchamiania.

Narzędzie może wykonywać kroki 2 i 3 (uruchamianie sesji uruchamiania, a następnie kończenie profilowania) zamiast natychmiast wyłączać profilowanie, gdy użytkownik żąda profilowania. Narzędzie może również wykonać krok 4.

Zobacz też