Condividi tramite


Accedere ai dati di traccia

.NET TraceProcessing è disponibile in NuGet con l'ID pacchetto seguente:

Microsoft.Windows.EventTracing.Processing.All

Questo pacchetto consente di accedere ai dati in un file di tracciamento. Se non si dispone già di un file traccia, è possibile usare Windows Performance Recorder per crearne uno.

L'app per console di esempio seguente mostra come accedere alle righe di comando di tutti i processi contenuti nella traccia:

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);
            }
        }
    }
}

Uso di TraceProcessor

Per elaborare una traccia, richiamare TraceProcessor.Create. L'interfaccia principale è ITraceProcessor e l'uso di questa interfaccia prevede il modello seguente:

  1. In primo luogo, indicare al processori i dati da utilizzare da una traccia
  2. In secondo luogo, elaborare la traccia; e
  3. Infine, accedere ai risultati.

Indicare al processore i tipi di dati desiderati in anticipo significa che non sarà necessario dedicare tempo all'elaborazione di grandi volumi di tutti i possibili tipi di dati di traccia. TraceProcessor, invece, esegue solo il lavoro necessario per fornire i tipi di dati specifici richiesti.

Con TraceProcessor, è consigliabile usare un paio di impostazioni del progetto:

  1. Si consiglia di eseguire exes a 64 bit.

    L'impostazione predefinita di Visual Studio per una nuova applicazione console .NET Framework C# è Qualsiasi CPU con la preferenza a 32 bit selezionata. L'impostazione predefinita per .NET potrebbe avere già l'impostazione consigliata.

    L'elaborazione delle tracce può richiedere un utilizzo intensivo della memoria, in particolare con le tracce più grandi, è consigliabile modificare il target della piattaforma in x64 (o deselezionare Prefer 32 bit) in exes che usano TraceProcessor. Per modificare queste impostazioni, consultare la scheda Compila in Proprietà del progetto. Per modificare queste impostazioni per tutte le configurazioni, assicurarsi che l'elenco a discesa Configurazione sia impostato su Tutte le configurazioni anziché sul valore predefinito solo per la configurazione corrente.

  2. È consigliabile usare NuGet con la modalità PackageReference più recente anziché la modalità packages.config meno recente.

    Per modificare il valore predefinito per i nuovi progetti, vedere Strumenti, Gestione pacchetti NuGet, Impostazioni di Gestione pacchetti, Gestione pacchetti, Formato di gestione pacchetti predefinito.

Origini dati predefinite

Un file con estensione .etl può acquisire molti tipi di dati in una traccia. Si noti che i dati contenuti in un file con estensione .etl dipendono dai provider abilitati durante l'acquisizione della traccia. L'elenco seguente mostra i tipi di dati traccia disponibili in TraceProcessor:

Codice Descrizione Elementi correlati a WPA
trace.UseClassicEvents() Fornisce eventi ETW classici da una traccia, che non includono informazioni sullo schema. Tabella Eventi generici (quando il tipo di evento è Classic o WPP)
trace.UseConnectedStandbyData() Fornisce dati da una traccia relativa all'ingresso e all'uscita del sistema dallo standby connesso. Tabella riassuntiva CS
trace.UseCpuIdleStates() Fornisce dati da una traccia sugli stati C della CPU. Tabella Stati di inattività CPU (quando il tipo è Actual)
trace.UseCpuSamplingData() Fornisce dati da una traccia sull'utilizzo della CPU in base al campionamento periodico del puntatore all'istruzione. Tabella Utilizzo CPU (da campionamento)
trace.UseCpuSchedulingData() Fornisce dati da una traccia sulla pianificazione dei thread CPU, inclusi i commutatori di contesto e gli eventi thread pronti. Tabella Utilizzo CPU (precisa)
trace.UseDevicePowerData() Fornisce dati da una traccia sugli stati D del dispositivo. Tabella DState dispositivo
trace.UseDirectXData() Fornisce dati da una traccia sull'attività DirectX. Tabella Utilizzo GPU
traceUseDiskIOData() Fornisce dati da una traccia sull'attività Disk I/O. Tabella Utilizzo disco
trace.UseEnergyEstimationData() Fornisce dati da una traccia sull'utilizzo stimato di energia per processo dal motore di stima dell'energia. Tabella Riepilogo motore di stima dell'energia (per processo)
trace.UseEnergyMeterData() Fornisce dati da una traccia sull'utilizzo misurato dell'energia dall'interfaccia Energy Meter Interface (EMI). Tabella Motore di stima dell'energia (mediante Emi)
trace.UseFileIOData() Fornisce dati da una traccia sull'attività File I/O. Tabella File I/O
trace.UseGenericEvents() Fornisce eventi manifesti e TraceLogging da una traccia. Tabella Eventi generici (quando il tipo di evento è manifesto o TraceLogging)
trace.UseHandles() Fornisce dati parziali da una traccia sugli handle kernel attivi. Tabella degli Handle
trace.UseHardFaults() Fornisce dati da una traccia sugli errori hard page. Tabella Errori Hard
trace.UseHeapSnapshots() Fornisce dati da una traccia sull'utilizzo dell'heap del processo. Tabella Snapshot Heap
trace.UseHypercalls() Fornisce dati sulle hypercall Hyper-V che si sono verificate durante una traccia.
trace.UseImageSections() Fornisce dati da una traccia sulle sezioni di un'immagine. Colonna Nome sezione della tabella Utilizzo CPU (da campionamento)
trace.UseInterruptHandlingData() Fornisce dati da una traccia relativa all'attività Interrupt Service Routine (ISR) e Deferred Procedure Call (DPC). Tabella DPC/ISR
trace.UseMarks() Fornisce i contrassegni (timestamp etichettati) da una traccia. Tabella Contrassegni
trace.UseMemoryUtilizationData() Fornisce dati da una traccia sull'utilizzo totale della memoria di sistema. Tabella Utilizzo della memoria
trace.UseMetadata() Fornisce i metadati traccia disponibili senza ulteriore elaborazione. Configurazione di sistema, tracce e generica
trace.UsePlatformIdleStates() Fornisce dati da una traccia sugli stati di inattività della piattaforma di destinazione e effettivi di un sistema. Tabella Stato di inattività della piattaforma
trace.UsePoolAllocations() Fornisce dati da una traccia sull'utilizzo della memoria del pool kernel. Tabella Riepilogo del pool
trace.UsePowerConfigurationData() Fornisce dati da una traccia sulla configurazione di alimentazione del sistema. Configurazione di sistema, Impostazioni dell'energia
trace.UsePowerDependencyCoordinatorData() Fornisce dati da una traccia sulle fasi del coordinatore delle dipendenze energetiche attive. Tabella Riepilogo delle fasi di notifica
trace.UseProcesses() Fornisce dati sui processi attivi durante una traccia, nonché sulle relative immagini e PDB. Tabella Processi; Tabella Immagini; Hub Simboli
trace.UseProcessorCounters() Fornisce dati da una traccia sui valori del contatore delle prestazioni del processore da Processor Counter Monitor (PCM).
trace.UseProcessorFrequencyData() Fornisce dati da una traccia sulla frequenza a cui sono lavorano i processori. Tabella Frequenza del processore (quando tipo è Actual)
trace.UseProcessorProfileData() Fornisce dati da una traccia sul profilo di alimentazione del processore attivo. Tabella Profili processore
trace.UseProcessorParkingData() Fornisce dati da una traccia sui processori parcheggiati o non parcheggiati. Tabella Processori in stato parcheggiato
trace.UseProcessorParkingLimits() Fornisce dati da una traccia relativa al numero massimo consentito di processori non parcheggiati. Tabella Stato Core Parking Cap
trace.UseProcessorQualityOfServiceData() Fornisce dati da una traccia sulla qualità del livello di servizio per ogni processore. Tabella Classe Qos processore
trace.UseProcessorThrottlingData() Fornisce dati da una traccia sulla limitazione della frequenza massima del processore. Tabella Vincoli processore
trace.UseReadyBootData() Fornisce dati da una traccia sull'attività di precaricamento all'avvio dall'avvio pronto. Tabella Eventi di avvio pronto
trace.UseReferenceSetData() Fornisce dati da una traccia sulle pagine di memoria virtuale usate da ogni processo. Tabella Impostazione di riferimento
trace.UseRegionsOfInterest() Fornisce aree denominate di intervallo di interesse da una traccia come specificato in un file di configurazione xml. Tabella Aree di interesse
trace.UseRegistryData() Fornisce dati sull'attività del Registro di sistema durante una traccia. Tabella Registro di sistema
trace.UseResidentSetData() Fornisce dati da una traccia sulle pagine di memoria virtuale per ogni processo residente nella memoria fisica. Tabella Resident Set
trace.UseRundownData() Fornisce dati da una traccia sugli intervalli durante i quali si è verificata la raccolta dei dati di rundown traccia. Aree ombreggiate nella sequenza temporale del grafico
trace.UseScheduledTasks() Fornisce dati sulle attività pianificate eseguite durante una traccia. Tabella Attività pianificate
trace.UseServices() Fornisce dati sui servizi attivi o dei quali è stato acquisito lo stato durante una traccia. Tabella Servizi; Configurazione del sistema, Servizi
trace.UseStacks() Fornisce dati sugli stack registrati durante una traccia.
trace.UseStackEvents() Fornisce dati sugli eventi associati agli stack registrati durante una traccia. Tabella Stack
trace.UseStackTags() Fornisce un mapper che raggruppa gli stack da una traccia nei tag dello stack, come specificato in un file di configurazione XML. Colonne come Stack Tag e Stack (Frame Tags)
trace.UseSymbols() Fornisce la capacità di caricare i simboli per una traccia. Configurare i percorsi dei simboli; Caricare i simboli
trace.UseSyscalls() Fornisce dati sulle chiamate di sistema che si sono verificate durante una traccia. Tabella Syscalls
trace.UseSystemMetadata() Fornisce metadati generici a livello di sistema da una traccia. Configurazione di sistema
trace.UseSystemPowerSourceData() Fornisce dati da una traccia sull'origine di alimentazione del sistema attivo (CA e CC). Tabella Alimentazione del Sistema
trace.UseSystemSleepData() Fornisce dati da una traccia sullo stato complessivo di alimentazione del sistema. Tabella Transizione Energia
trace.UseTargetCpuIdleStates() Fornisce dati da una traccia sugli stati target C della CPU. Tabella Stati di inattività CPU (quando il tipo è Target)
trace.UseTargetProcessorFrequencyData() Fornisce dati da una traccia sulle frequenze del processore target. Tabella Frequenza del processore (quando il tipo è Target)
trace.UseThreads() Fornisce dati sui thread attivi durante una traccia. Tabella Durata thread
trace.UseTraceStatistics() Fornisce statistiche sugli eventi in una traccia. Configurazione di sistema, statistiche della traccia
trace.UseUtcData() Fornisce dati da una traccia sull'attività di telemetria Microsoft usando il client Universal Telemetry (UTC). Tabella Utc
trace.UseWindowInFocus() Fornisce dati da una traccia sulle modifiche apportate alla finestra Interfaccia utente attiva in stato attivo. Tabella Finestra in stato attivo
trace.UseWindowsTracePreprocessorEvents() Fornisce eventi Software Trace Preprocessor (WPP) di Windows da una traccia. Tabella Traccia WPP; Tabella Eventi generici (quando il tipo di evento è WPP)
trace.UseWinINetData() Fornisce dati da una traccia dell'attività Internet tramite Windows Internet (WinINet). Tabella Dettagli del download
trace.UseWorkingSetData() Fornisce dati da una traccia sulle pagine di memoria virtuale presenti nel working set per ogni processo o categoria del kernel. Tabella Snapshot di memoria virtuale

Vedere anche i metodi di estensione in ITraceSource per tutti i dati traccia disponibili, oppure esaminare il metodo disponibile da "traccia".

Passaggi successivi

In questa panoramica si è appreso come accedere ai dati traccia usando TraceProcessor e le origini dati integrate a cui è possibile accedere.

Il passaggio successivo consiste nell'apprendere come estendere TraceProcessor per accedere ai dati traccia personalizzati.