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:
- En primer lugar, informe al procesador de los datos que quiere usar de un seguimiento.
- En segundo lugar, procese el seguimiento.
- 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.
Configuración del proyecto recomendada
Recomendamos usar un par de opciones de configuración con TraceProcessor:
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.
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.