Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Najpierw poinformuj podmiot przetwarzający, jakich danych chcesz użyć ze śledzenia
- Po drugie, przetwórz ślad; i
- 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.
Zalecane ustawienia projektu
Istnieje kilka ustawień projektu, których zalecamy używać z modułem TraceProcessor:
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.
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.
Windows developer