Udostępnij przez


Uzyskiwanie dostępu do danych śledzenia

TraceProcessing dla platformy .NET jest dostępne w NuGet pod następującym identyfikatorem pakietu:

Microsoft.Windows.EventTracing.Processing.All

Ten pakiet umożliwia dostęp do danych w pliku śledzenia. Jeśli nie masz jeszcze pliku śledzenia, możesz go utworzyć za pomocą narzędzia Windows Performance Recorder .

W poniższej przykładowej aplikacji konsolowej pokazano, jak uzyskać dostęp do wierszy poleceń wszystkich procesów zawartych w śladzie:

using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;

class Program
{
    static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.Error.WriteLine("Usage: <trace.etl>");
            return;
        }

        using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
        {
            IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();

            trace.Process();

            IProcessDataSource processData = pendingProcessData.Result;

            foreach (IProcess process in processData.Processes)
            {
                Console.WriteLine(process.CommandLine);
            }
        }
    }
}

Korzystanie z narzędzia TraceProcessor

Aby przetworzyć ślad, wywołaj metodę TraceProcessor.Create. Podstawowy interfejs to ITraceProcessor, a użycie tego interfejsu obejmuje następujący wzorzec:

  1. Najpierw poinformuj podmiot przetwarzający, jakich danych chcesz użyć ze śledzenia
  2. Po drugie, przetwórz ślad; i
  3. Na koniec uzyskaj dostęp do wyników.

Informowanie procesora o rodzajach danych, które mają być z góry, oznacza, że nie trzeba poświęcać czasu na przetwarzanie dużych ilości wszystkich możliwych rodzajów danych śledzenia. Zamiast tego funkcja TraceProcessor po prostu wykonuje pracę wymaganą do dostarczenia określonych rodzajów żądanych danych.

Istnieje kilka ustawień projektu, których zalecamy używać z modułem TraceProcessor:

  1. Zalecamy uruchamianie plików exe jako 64-bitowych.

    Domyślnym ustawieniem w Visual Studio dla nowej aplikacji konsolowej .NET Framework w języku C# jest Any CPU z zaznaczonym Preferuj 32-bitowe. Domyślne ustawienie w .NET może już być zgodne z zaleceniami.

    Przetwarzanie śledzenia może być znacznie obciążające pamięć, szczególnie w przypadku większych śladów, i zalecamy zmianę celu platformy na x64 (lub usunięcie zaznaczenia opcji Preferuj 32-bitowe) w plikach wykonywalnych korzystających z narzędzia TraceProcessor. Aby zmienić te ustawienia, zobacz kartę Kompilacja w obszarze Właściwości projektu. Aby zmienić te ustawienia dla wszystkich konfiguracji, upewnij się, że lista rozwijana Konfiguracja jest ustawiona na Wszystkie konfiguracje, a nie na wartość domyślną tylko bieżącej konfiguracji.

  2. Zalecamy użycie narzędzia NuGet z nowszym trybem PackageReference, a nie starszym trybem packages.config.

    Aby zmienić ustawienie domyślne dla nowych projektów, zobacz Narzędzia, Menedżer pakietów NuGet, Ustawienia Menedżera pakietów, Zarządzanie pakietami, Domyślny format zarządzania pakietami.

Wbudowane źródła danych

Plik .etl może przechwytywać wiele rodzajów danych w śledzeniu. Należy pamiętać, że dane w pliku .etl zależą od tego, którzy dostawcy zostali włączeni podczas rejestrowania śladu. Na poniższej liście przedstawiono rodzaje danych śledzenia dostępnych w narzędziu TraceProcessor:

Kod Opis Powiązane elementy WPA
ślad.UseClassicEvents() Udostępnia klasyczne zdarzenia ETW ze śledzenia, które nie zawierają informacji o schemacie. Tabela zdarzeń ogólnych (gdy typ zdarzenia jest klasyczny lub WPP)
ślad. UseConnectedStandbyData() Dostarcza dane ze śledzenia dotyczące wprowadzania i zamykania połączonego trybu wstrzymania przez system. Tabela podsumowania CS
ślad. UseCpuIdleStates() Dostarcza dane ze śledzenia stanów C CPU. Tabela stanów nieaktywności CPU (gdy typ jest rzeczywisty)
ślad. UseCpuSamplingData() Dostarcza dane ze śledzenia użycia procesora na podstawie okresowego próbkowania licznika instrukcji. Tabela próbki zużycia procesora
ślad. UseCpuSchedulingData() Dostarcza dane ze śledzenia planowania wątków procesora CPU, w tym przełączania kontekstu i zdarzeń wątków gotowych do działania. Tabela dokładnego użycia procesora
ślad.UseDevicePowerData() Dostarcza dane ze śledzenia stanów D urządzenia. Tabela stanu urządzenia DState
ślad. UseDirectXData() Dostarcza dane ze śledzenia aktywności DirectX. Tabela wykorzystania procesora GPU
traceUseDiskIOData() Dostarcza dane ze śledzenia aktywności we/wy dysku. Tabela użycia dysku
ślad. Use EnergyEstimationData() Dostarcza dane śledzenia zużycia energii na proces szacowanego przez mechanizm szacowania energii. Tabela Podsumowanie aparatu szacowania energii (według procesu)
ślad.UseEnergyMeterData() Dostarcza dane ze śledzenia mierzonego zużycia energii z interfejsu miernika energii (EMI). Tabela aparatu szacowania energii (według Emi)
ślad. UseFileIOData() Dostarcza dane ze śledzenia aktywności we/wy pliku. Tabela wejścia/wyjścia pliku
śledzenie.UżyjGenericEvents() Udostępnia zmanifestowane i TraceLogging zdarzenia z dziennika śledzenia. Tabela zdarzeń ogólnych (gdy typ zdarzenia ma wartość Manifested lub TraceLogging)
ślad.UseHandles() Udostępnia częściowe dane śladu dotyczące aktywnych uchwytów jądra. Elementy sterujące tabelą
ślad. UseHardFaults() Dostarcza dane ze śledzenia błędów twardych stron. Tabela Poważnych Błędów
ślad. UseHeapSnapshots() Dostarcza dane ze śledzenia użycia stert procesów. Tabela zrzutów pamięci sterty
ślad.UżyjHypercalli() Dostarcza dane dotyczące hipercalli Hyper-V, które miały miejsce podczas śledzenia.
trace.UżyjSekcjiObrazów() Dostarcza dane ze śladu dotyczącego sekcji obrazu. Kolumna Nazwa sekcji tabeli Użycie procesora CPU (próbkowane)
ślad.UseInterruptHandlingData() Dostarcza dane ze śledzenia działania procedury przerwania usługi (ISR) i odroczonego wywołania procedury (DPC). Tabela DPC/ISR
ślad.UżyjZnaczków() Zawiera znaczniki (oznaczone znacznikami czasu) ze śledzenia. Tabela ocen
ślad. UseMemoryUdata() Dostarcza dane ze śledzenia całkowitego wykorzystania pamięci systemu. Tabela Wykorzystania pamięci
ślad.UżyjMetadanych() Udostępnia metadane śledzenia bez dalszego przetwarzania. Konfiguracja systemu, śledzenie i ogólne
ślad. UsePlatformIdleStates() Dostarcza dane ze śledzenia na temat docelowych i rzeczywistych stanów bezczynności platformy systemu. Tabela stanu bezczynności platformy
ślad. UsePoolAllocations() Dostarcza dane z analizy użycia pamięci puli jądra. Tabela podsumowania puli
ślad. UsePowerConfigurationData() Dostarcza dane ze śledzenia konfiguracji zasilania systemu. Konfiguracja systemu, ustawienia zasilania
ślad. UsePowerDependencyCoordinatorData() Dostarcza dane ze śledzenia faz koordynatora zależności mocy czynnej. Tabela podsumowania fazy powiadomień
ślad. UseProcesses() Udostępnia dane dotyczące procesów aktywnych podczas śledzenia, a także ich obrazów i plików PDB. Tabela procesów; Tabela obrazów; Koncentrator symboli
ślad. UseProcessorCounters() Dostarcza dane ze śledzenia wartości liczników wydajności procesora z monitora licznika procesora (PCM).
ślad.UżyjDanychCzęstotliwościProcesora() Dostarcza dane ze śledzenia częstotliwości, z jaką są uruchamiane procesory. Tabela częstotliwości procesora (gdy typ to rzeczywisty)
ślad. UseProcessorProfileData() Dostarcza dane ze śledzenia profilu zasilania aktywnego procesora. Tabela Profile procesora
ślad.UseProcessorParkingData() Dostarcza dane ze śladu dotyczące tego, które procesory zostały zaparkowane lub odparkowane. Tabela stanu parkingu procesora
śledzenie.UseProcessorParkingLimits() Dostarcza dane ze śledzenia maksymalnej dozwolonej liczby niezaparkowanych procesorów. Tabela stanu podstawowego limitu parkingu
ślad. UseProcessorQualityOfServiceData() Dostarcza dane ze śledzenia dotyczące jakości poziomu usług dla każdego procesora. Tabela klasy Qos procesora
ślad.UżyjDanychOgraniczeniaProcesora() Dostarcza dane ze śledzenia dotyczące ograniczania maksymalnej częstotliwości procesora. Tabela ograniczeń procesora
ślad. UseReadyBootData() Dostarcza dane ze śledzenia działania wstępnego pobierania rozruchu z gotowego rozruchu. Tabela zdarzeń gotowego rozruchu
Trace.UseReferenceSetData() Dostarcza dane ze śledzenia stron pamięci wirtualnej używanej przez każdy proces. Tabela referencyjna
ślad. UseRegionsOfInterest() Udostępnia nazwane obszary interesujących interwałów ze śladu, zgodnie z określeniami w pliku konfiguracyjnym XML. Tabela Regionów zainteresowania
ślad. UseRegistryData() Dostarcza dane dotyczące aktywności rejestru podczas śledzenia. Tabela rejestru
ślad. UseResidentSetData() Dostarcza dane ze śledzenia stron pamięci wirtualnej dla każdego procesu, który znajdował się w pamięci fizycznej. Tabela Zestaw rezydentów
ślad. UseRundownData() Zapewnia dane z przebiegów śladu dotyczące interwałów, w których odbywało się zbieranie danych dotyczących szczegółowej analizy śledzenia. Zacienione regiony na osi czasu grafu
ślad.UseScheduledTasks() Udostępnia dane dotyczące zaplanowanych zadań uruchamianych podczas śledzenia. Tabela Zaplanowane zadania
ślad. UseServices() Dostarcza dane dotyczące usług, które były aktywne lub miały uchwycony swój stan w czasie śledzenia. Tabela usług; Konfiguracja systemu, usługi
ślad. UseStacks() Dostarcza dane dotyczące stosów zarejestrowanych podczas śledzenia.
ślad. UseStackEvents() Udostępnia dane o zdarzeniach skojarzonych ze stosami rejestrowanymi podczas śledzenia. Tabela stosów
ślad. UseStackTags() Udostępnia maper grupujący stosy ze śledzenia do tagów stosu, jak określono w pliku konfiguracji XML. Kolumny, takie jak tag stosu i stos (tagi ramek)
ślad. UseSymbols() Zapewnia możliwość ładowania symboli do śledzenia. Konfigurowanie ścieżek symboli; Ładowanie symboli
ślad. UseSyscalls() Dostarcza dane dotyczące wywołań syscall, które wystąpiły podczas śledzenia. Tabela Syscalls
ślad. UseSystemMetadata() Udostępnia ogólne, systemowe metadane z śladu. Konfiguracja systemu
ślad. UseSystemPowerSourceData() Dostarcza dane ze śledzenia źródła zasilania systemu aktywnego (AC vs DC). Tabela Źródła zasilania systemu
Śledzenie.UseSystemSleepData() Dostarcza dane ze śledzenia ogólnego stanu zasilania systemu. Tabela przejść zasilania
ślad. UseTargetCpuIdleStates() Dostarcza dane z analizy śladu dotyczące stanów C docelowego CPU. Tabela Stanów bezczynności procesora CPU (gdy typ jest wartością docelową)
trace.UżyjDanychCzęstotliwościDocelowegoProcesora() Dostarcza dane ze śledzenia częstotliwości procesora docelowego. Tabela częstotliwości procesora (gdy typ to wartość docelowa)
ślad. UseThreads() Udostępnia dane dotyczące wątków aktywnych podczas śledzenia. Tabela czasu życia wątków
ślad.UżyjStatystykŚledzenia() Udostępnia statystyki dotyczące zdarzeń w śladzie. Konfiguracja systemu, statystyka śledzenia
ślad. UseUtcData() Dostarcza dane ze śledzenia aktywności telemetrii firmy Microsoft przy użyciu Uniwersalnego Klienta Telemetrii (UTC). Tabela UTC
ślad. UseWindowInFocus() Dostarcza dane ze śledzenia zmian w aktywnym oknie interfejsu użytkownika w fokusie. Okno w tabeli fokusu
ślad.UseWindowsTracePreprocessorEvents() Zapewnia zdarzenia preprocesora śledzenia oprogramowania Windows (WPP) z przebiegu śledzenia. Tabela śledzenia programu WPP; Tabela zdarzeń ogólnych (gdy typ zdarzenia to WPP)
śladnik.UżyjDanychWinINet() Dostarcza dane ze śledzenia aktywności internetowej za pośrednictwem Internetu systemu Windows (WinINet). Pobierz tabelę szczegółów
ślad. UseWorkingSetData() Dostarcza dane ze śledzenia stron pamięci wirtualnej, które znajdowały się w zestawie roboczym dla każdego procesu lub kategorii jądra. Tabela Zrzutów pamięci wirtualnej

Zobacz również metody rozszerzeń dla ITraceSource dla wszystkich dostępnych danych śledzenia, lub sprawdź metodę dostępną poprzez 'trace', pokazanej przez IntelliSense.

Dalsze kroki

W tym omówieniu przedstawiono sposób uzyskiwania dostępu do danych śledzenia przy użyciu narzędzia TraceProcessor i wbudowanych źródeł danych, do których może uzyskiwać dostęp.

Następnym krokiem jest dowiedzieć się, jak rozszerzyć TraceProcessor w celu uzyskania dostępu do niestandardowych danych śledzenia.