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
trace.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)
trace.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
trace.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)
trace.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)
trace.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)
trace.UseDevicePowerData() Proporciona datos de un seguimiento sobre los estados D de la CPU. Tabla DState del dispositivo
trace.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
trace.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)
trace.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)
trace.UseFileIOData() Proporciona datos de un seguimiento sobre la actividad de E/S del disco. Tabla de E/S de archivos
trace.UseGenericEvents() Proporciona eventos manifestados y de TraceLogging de un seguimiento. Tabla de eventos genéricos (cuando el tipo de evento es manifestado o TraceLogging)
trace.UseHandles() Proporciona datos parciales de un seguimiento sobre los identificadores de kernel activos. Tabla de identificadores
trace.UseHardFaults() Proporciona datos de un seguimiento sobre errores de página graves. Tabla de errores graves
trace.UseHeapSnapshots() Proporciona datos de un seguimiento sobre el uso del montón de procesos. Tabla de instantáneas de montón
trace.UseHypercalls() Proporciona datos sobre las hiperllamadas de Hyper-V que se produjeron durante un seguimiento.
trace.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)
trace.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
trace.UseMarks() Proporciona las marcas (marcas de tiempo etiquetadas) de un seguimiento. Tabla de marcas
trace.UseMemoryUtilizationData() Proporciona datos de un seguimiento sobre el uso total de la memoria del sistema. Tabla de uso de memoria
trace.UseMetadata() Proporciona metadatos de seguimiento disponibles sin necesidad de realizar más procesamientos. Configuración del sistema, seguimientos e información general
trace.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
trace.UsePoolAllocations() Proporciona datos de un seguimiento sobre el uso de memoria del grupo de kernels. Tabla de resumen de grupos
trace.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.
trace.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
trace.UseProcesses() 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
trace.UseProcessorCounters() Proporciona datos de un seguimiento en relación con los valores del contador de rendimiento del procesador de Processor Counter Monitor (PCM).
trace.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)
trace.UseProcessorProfileData() Proporciona datos de un seguimiento en relación con el perfil de energía del procesador activo. Tabla de perfiles del procesador
trace.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
trace.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
trace.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
trace.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
trace.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
trace.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
trace.UseRegistryData() Proporciona datos sobre la actividad del Registro durante un seguimiento. Tabla del Registro
trace.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
trace.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
trace.UseScheduledTasks() Proporciona datos sobre las tareas programadas que se ejecutaron durante un seguimiento. Información de las tareas programadas
trace.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
trace.UseStacks() Proporciona datos sobre las pilas registradas durante un seguimiento.
trace.UseStackEvents() Proporciona datos sobre los eventos asociados a las pilas registradas durante un seguimiento. Tabla de pilas
trace.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).
trace.UseSymbols() Proporciona la capacidad de cargar símbolos para un seguimiento. Configurar rutas de acceso de símbolos; cargar símbolos
trace.UseSyscalls() Proporciona datos sobre las llamadas del sistema que se produjeron durante un seguimiento. Tabla de llamadas del sistema
trace.UseSystemMetadata() Proporciona metadatos generales de todo el sistema a partir de un seguimiento. Configuración del sistema
trace.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
trace.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
trace.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)
trace.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)
trace.UseThreads() Proporciona datos sobre los subprocesos activos durante un seguimiento. Tabla de duraciones de subprocesos
trace.UseTraceStatistics() Proporciona estadísticas sobre los eventos de un seguimiento. Configuración del sistema, estadísticas de seguimiento
trace.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
trace.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
trace.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)
trace.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
trace.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.