Compartir a través de


Acceder a los datos de seguimiento

TraceProcessing de .NET está disponible en NuGet con el siguiente identificador de paquete:

Microsoft.Windows.EventTracing.Processing.All

Este paquete le permite acceder a los datos de un archivo de seguimiento. Si aún no tiene ningún archivo de seguimiento, puede usar Windows Performance Recorder para crear uno.

En la siguiente aplicación de consola de ejemplo se muestra cómo acceder a las líneas de comandos de todos los procesos incluidos en el seguimiento:

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 de TraceProcessor

Para procesar un seguimiento, llame a TraceProcessor.Create. La interfaz principal es ITraceProcessor y el uso de esta implica el siguiente patrón:

  1. En primer lugar, informe al procesador de los datos que quiere usar de un seguimiento.
  2. En segundo lugar, procese el seguimiento.
  3. Por último, acceda a los resultados.

Si indica al procesador los tipos de datos que quiere por adelantado, no deberá dedicar tiempo a procesar grandes volúmenes de todos los tipos posibles de datos de seguimiento. En su lugar, TraceProcessor solo realiza el trabajo necesario para proporcionar los tipos específicos de datos que solicita.

Recomendamos usar un par de opciones de configuración con TraceProcessor:

  1. Recomendamos ejecutar archivos exe de 64 bits.

    El valor predeterminado de Visual Studio para una nueva aplicación de consola de .NET Framework de C# es cualquier CPU con la preferencia de 32 bits marcada. Es posible que el valor predeterminado de .NET ya tenga la configuración recomendada.

    El procesamiento de seguimiento puede hacer un uso intensivo de la memoria, especialmente con seguimientos más grandes, y se recomienda cambiar el destino de la plataforma a x64 (o desactivar la preferencia de 32 bits) en los archivos exe que usan TraceProcessor. Para cambiar este valor, consulte la pestaña Compilación en Propiedades del proyecto. Para cambiar este valor en todas las configuraciones, asegúrese de que la lista desplegable Configuración está establecida en Todas las configuraciones, en lugar de solo el valor predeterminado de la configuración actual.

  2. Recomendamos usar NuGet con el modo PackageReference de estilo más reciente en lugar del modo packages.config anterior.

    Para cambiar el valor predeterminado de los nuevos proyectos, consulte Herramientas, Administrador de paquetes NuGet, Configuración del Administrador de paquetes, Administración de paquetes y Formato predeterminado de administración de paquetes.

Orígenes de datos integrados

Un archivo .etl puede capturar muchos tipos de datos en un seguimiento. Tenga en cuenta que los datos que se encuentran en un archivo .etl dependen de los proveedores que se habilitaron cuando se capturó el seguimiento. En la lista siguiente se muestran los tipos de datos de seguimiento disponibles en TraceProcessor:

Código Descripción Elementos de WPA relacionados
rastro. UseClassicEvents() Proporciona eventos de ETW clásicos de un seguimiento, que no incluyen información de esquema. Tabla de eventos genéricos (cuando el tipo de evento es clásico o WPP)
rastro. UseConnectedStandbyData() Proporciona datos de un seguimiento en relación con el sistema que entra y sale del modo de espera conectado. Tabla de resumen CS
traza.UseCpuIdleStates() Proporciona datos de un seguimiento sobre los estados C de la CPU. Tabla de estados inactivos de la CPU (cuando el tipo es real)
traza.UseCpuSamplingData() Proporciona datos de un seguimiento sobre el uso de la CPU en función del muestreo periódico del puntero de instrucción. Tabla de uso de la CPU (de muestra)
traza.UseCpuSchedulingData() Proporciona datos de un seguimiento sobre la programación de subprocesos de la CPU, incluidos los modificadores de contexto y los eventos de subprocesos listos. Tabla de uso de la CPU (precisa)
rastro. UseDevicePowerData() Proporciona datos de un seguimiento sobre los estados D de la CPU. Tabla DState del dispositivo
rastro. UseDirectXData() Proporciona datos de un seguimiento sobre la actividad de DirectX. Tabla de uso de la GPU
traceUseDiskIOData() Proporciona datos de un seguimiento sobre la actividad de E/S del disco. Tabla de uso del disco
rastro. UseEnergyEstimationData() Proporciona datos de un seguimiento sobre el uso de energía estimado por proceso del motor de estimación de energía. Tabla de resumen del motor de estimación de energía (por proceso)
traza.UseEnergyMeterData() Proporciona datos de un seguimiento sobre el uso de energía medido de Energy Meter Interface (EMI). Tabla del motor de estimación de energía (por EMI)
traza.UseFileIOData() Proporciona datos de un seguimiento sobre la actividad de E/S del disco. Tabla de E/S de archivos
rastro. UseGenericEvents() Proporciona eventos manifestados y de TraceLogging de un seguimiento. Tabla de eventos genéricos (cuando el tipo de evento es manifestado o TraceLogging)
seguimiento.UseHandles() Proporciona datos parciales de un seguimiento sobre los identificadores de kernel activos. Tabla de identificadores
rastro. UseHardFaults() Proporciona datos de un seguimiento sobre errores de página graves. Tabla de errores graves
traza.UseHeapSnapshots() Proporciona datos de un seguimiento sobre el uso del montón de procesos. Tabla de instantáneas de montón
rastro. UseHypercalls() Proporciona datos sobre las hiperllamadas de Hyper-V que se produjeron durante un seguimiento.
traza.UseImageSections() Proporciona datos de un seguimiento sobre las secciones de una imagen. Columna de nombre de sección de la tabla de uso de la CPU (de muestra)
traza.UseInterruptHandlingData() Proporciona datos de un seguimiento sobre la actividad de la llamada a procedimiento diferido (DPC) y de la rutina de servicio de interrupción (ISR). Tabla de DPC/ISR
rastro.UseMarks() Proporciona las marcas (marcas de tiempo etiquetadas) de un seguimiento. Tabla de marcas
traza.UseMemoryUtilizationData() Proporciona datos de un seguimiento sobre el uso total de la memoria del sistema. Tabla de uso de memoria
rastro. UseMetadata() Proporciona metadatos de seguimiento disponibles sin necesidad de realizar más procesamientos. Configuración del sistema, seguimientos e información general
rastro. UsePlatformIdleStates() Proporciona datos de un seguimiento sobre los estados de inactividad de la plataforma real y de destino de un sistema. Tabla de estado de inactividad de la plataforma
rastro. UsePoolAllocations() Proporciona datos de un seguimiento sobre el uso de memoria del grupo de kernels. Tabla de resumen de grupos
rastro. UsePowerConfigurationData() Proporciona datos de un seguimiento en relación con la configuración de energía del sistema. Configuración del sistema y la energía.
rastro. UsePowerDependencyCoordinatorData() Proporciona datos de un seguimiento en relación con las fases activas del coordinador de dependencias de energía. Tabla de resumen de la fase de notificación
traza.UsarProcesos() Proporciona datos sobre los procesos activos durante un seguimiento, así como sus imágenes y archivos PDB. Tabla de procesos; tabla de imágenes; centro de símbolos
rastro. UseProcessorCounters() Proporciona datos de un seguimiento en relación con los valores del contador de rendimiento del procesador de Processor Counter Monitor (PCM).
rastro. UseProcessorFrequencyData() Proporciona datos de un seguimiento sobre la frecuencia con la que se ejecutó el procesador. Tabla de frecuencia del procesador (cuando el tipo es real)
traza.UseProcessorProfileData() Proporciona datos de un seguimiento en relación con el perfil de energía del procesador activo. Tabla de perfiles del procesador
traza.UseProcessorParkingData() Proporciona datos de un seguimiento en relación con los procesadores que estaban detenidos o no. Tabla de estado de detención del procesador
rastro. UseProcessorParkingLimits() Proporciona datos de un seguimiento en relación con el número máximo permitido de procesadores no detenidos. Tabla de estado del límite de detenciones del núcleo
traza.UseProcessorQualityOfServiceData() Proporciona datos de un seguimiento en relación con la calidad del nivel de servicio para cada procesador. Tabla de la clase QoS del procesador
rastro. UseProcessorThrottlingData() Proporciona datos de un seguimiento en relación con la limitación de frecuencia máxima del procesador. Tabla de restricciones del procesador
Trace.UseReadyBootData() Proporciona datos de un seguimiento en relación con la actividad de captura previa del arranque de Ready Boot. Tabla de eventos de Ready Boot
traza.UseReferenceSetData() Proporciona datos de un seguimiento en relación con las páginas de la memoria virtual que utiliza cada proceso. Tabla del conjunto de referencias
rastro. UseRegionsOfInterest() Proporciona regiones con nombre de intervalos de interés de un seguimiento, tal y como se especifica en un archivo de configuración xml. Tabla de regiones de interés
traza.UseRegistryData() Proporciona datos sobre la actividad del Registro durante un seguimiento. Tabla del Registro
traza.UseResidentSetData() Proporciona datos de un seguimiento en relación con las páginas de la memoria virtual de todos los procesos que residían en la memoria física. Tabla del conjunto residente
rastro. UseRundownData() Proporciona datos de un seguimiento en relación con los intervalos durante los que se produjo la recopilación de datos de resumen del seguimiento. Regiones sombreadas en la escala de tiempo del gráfico
rastro. UseScheduledTasks() Proporciona datos sobre las tareas programadas que se ejecutaron durante un seguimiento. Información de las tareas programadas
rastro. UseServices() Proporciona datos sobre los servicios que estaban activos o cuyo estado estaba capturado durante un seguimiento. Tabla de servicios; configuración del sistema; servicios
rastro. UseStacks() Proporciona datos sobre las pilas registradas durante un seguimiento.
rastro. UseStackEvents() Proporciona datos sobre los eventos asociados a las pilas registradas durante un seguimiento. Tabla de pilas
rastro. UseStackTags() Proporciona un asignador que agrupa las pilas de un seguimiento en etiquetas de pila tal y como se especifica en un archivo de configuración XML. Columnas como Stack Tag (Etiqueta de pila) y Pila (etiquetas de marco).
rastro. UseSymbols() Proporciona la capacidad de cargar símbolos para un seguimiento. Configurar rutas de acceso de símbolos; cargar símbolos
rastro. UseSyscalls() Proporciona datos sobre las llamadas del sistema que se produjeron durante un seguimiento. Tabla de llamadas del sistema
traza.UseSystemMetadata() Proporciona metadatos generales de todo el sistema a partir de un seguimiento. Configuración del sistema
traza.UseSystemPowerSourceData() Proporciona datos de un seguimiento en relación con la fuente de alimentación activa del sistema (CA frente a CC). Tabla de la fuente de alimentación del sistema
traza.UseSystemSleepData() Proporciona datos de un seguimiento en relación con el estado de energía general del sistema. Tabla de transición de energía
rastro. UseTargetCpuIdleStates() Proporciona datos de un seguimiento en relación con los estados C de la CPU. Tabla de estados inactivos de la CPU (cuando el tipo es el destino)
rastro. UseTargetProcessorFrequencyData() Proporciona datos de un seguimiento en relación con las frecuencias del procesador de destino. Tabla de frecuencia del procesador (cuando el tipo es el destino)
rastro. UseThreads() Proporciona datos sobre los subprocesos activos durante un seguimiento. Tabla de duraciones de subprocesos
rastro. UseTraceStatistics() Proporciona estadísticas sobre los eventos de un seguimiento. Configuración del sistema, estadísticas de seguimiento
traza.UseUtcData() Proporciona datos de un seguimiento en relación con la actividad de telemetría de Microsoft mediante el cliente de telemetría universal (UTC). Tabla UTC
rastro. UseWindowInFocus() Proporciona datos de un seguimiento en relación con los cambios en la ventana activa de la interfaz de usuario enfocada. Tabla de la ventana enfocada
seguimiento.UseWindowsTracePreprocessorEvents() Proporciona los eventos del preprocesador de seguimiento de software de Windows (WPP) de un seguimiento. Tabla de seguimiento de WPP; tabla de eventos genéricos (cuando el tipo de evento es WPP)
rastro. UseWinINetData() Proporciona datos de un seguimiento en relación con la actividad de Internet a través Windows Internet (WinINet). Tabla para descargar los detalles
rastro. UseWorkingSetData() Proporciona datos de un seguimiento en relación con las páginas de la memoria virtual que estaban en el espacio de trabajo para cada proceso o categoría de kernel. Tabla de instantáneas de memoria virtual

Consulte también los métodos de extensión en ITraceSource para ver todos los datos de seguimiento disponibles o examine el método disponible en "trace" mostrado por IntelliSense.

Pasos siguientes

En esta introducción, ha aprendido a acceder a los datos de seguimiento mediante TraceProcessor y ha conocido los orígenes de datos integrados a los que puede acceder.

En el siguiente paso, aprenderá a ampliar TraceProcessor para acceder a datos de seguimiento personalizados.