hace 3 años
El Visor de eventos en Visual Studio es una herramienta fundamental para los desarrolladores que buscan analizar el rendimiento y comportamiento de sus aplicaciones. Funciona como un análisis post-mortem, permitiéndote recopilar información de diagnóstico mientras tu aplicación se ejecuta y examinarla detalladamente una vez que se detiene. A través de una lista de eventos, como la carga de módulos, el inicio de hilos y la configuración del sistema, el Visor de eventos te ofrece una visión clara de la actividad de tu aplicación dentro del entorno de Visual Studio Profiler. En este artículo, te guiaremos paso a paso para que aprendas a abrir y utilizar esta valiosa herramienta.

¿Qué es el Visor de eventos en Visual Studio?
El Visor de eventos genérico en Visual Studio es una ventana que muestra la actividad de tu aplicación a través de un listado cronológico de eventos. Estos eventos abarcan una amplia gama de acciones, desde el momento en que se cargan los módulos de tu aplicación hasta el inicio y finalización de hilos de ejecución, e incluso detalles sobre la configuración del sistema operativo. Su propósito principal es asistirte en el diagnóstico de cómo se comporta tu aplicación dentro del entorno de Visual Studio profiler, proporcionándote datos cruciales para la identificación y resolución de problemas de rendimiento o errores inesperados.

Pasos para abrir el Visor de eventos en Visual Studio
Abrir el Visor de eventos en Visual Studio es un proceso sencillo y rápido. Sigue estos pasos para acceder a esta herramienta y comenzar a analizar el comportamiento de tu aplicación:
- Abre el Perfilador de rendimiento: La forma más rápida de acceder al Perfilador de rendimiento es utilizando el atajo de teclado Alt+F2. Al presionarlo, se abrirá la ventana del Perfilador de rendimiento dentro de Visual Studio.
- Selecciona el Visor de eventos: Dentro de la ventana del Perfilador de rendimiento, busca y marca la casilla de verificación que dice "Visor de eventos". Esta acción indica a Visual Studio que deseas incluir la recopilación de datos del Visor de eventos durante la sesión de profiling.
- Inicia la herramienta: Una vez que hayas seleccionado el Visor de eventos, haz clic en el botón "Iniciar". Visual Studio comenzará a ejecutar la herramienta de profiling, incluyendo el Visor de eventos.
- Ejecuta el escenario a perfilar: Después de iniciar la herramienta, interactúa con tu aplicación, ejecutando el escenario específico que deseas analizar. Realiza las acciones de usuario, pruebas de rendimiento o cualquier flujo de trabajo que te interese monitorizar.
- Detén la recopilación de datos: Cuando hayas finalizado el escenario de profiling, detén la recopilación de datos. Puedes hacerlo de dos maneras: haciendo clic en el botón "Detener recopilación" en el Perfilador de rendimiento, o simplemente cerrando tu aplicación. Al detener la recopilación o cerrar la aplicación, Visual Studio procesará los datos recopilados y te mostrará los resultados, incluyendo la información del Visor de eventos.
¡Listo! Siguiendo estos sencillos pasos, habrás abierto el Visor de eventos y estarás preparado para analizar los datos de diagnóstico de tu aplicación.
Entendiendo los datos del Visor de eventos
El Visor de eventos presenta la información en un formato tabular, con columnas que describen diferentes aspectos de cada evento registrado. Comprender el significado de cada columna es esencial para interpretar correctamente los datos y extraer conclusiones relevantes. A continuación, se describe cada columna en detalle:
| Nombre de columna | Descripción |
|---|---|
| Nombre del proveedor | Indica la fuente del evento, es decir, el componente o módulo que generó el evento. Por ejemplo, puede ser el sistema operativo, un módulo específico de tu aplicación, o un proveedor de eventos personalizado. |
| Nombre del evento | Muestra el nombre específico del evento tal como lo define su proveedor. Este nombre suele ser descriptivo de la acción o suceso que se ha registrado. Ejemplos comunes incluyen "Module Load" (Carga de módulo), "Thread Start" (Inicio de hilo), o "System Configuration Change" (Cambio en la configuración del sistema). |
| Texto | Proporciona una descripción textual del evento, combinando información del proveedor, el nombre del evento y el ID del evento para ofrecer un resumen legible y comprensible. |
| Marca de tiempo (ms) | Indica el momento exacto en que ocurrió el evento, medido en milisegundos desde el inicio de la sesión de profiling. Esta columna es crucial para entender la secuencia temporal de los eventos. |
| GUID del proveedor | Es el identificador único global (GUID) del proveedor de eventos. Este identificador permite identificar de forma inequívoca al proveedor, especialmente útil cuando hay múltiples proveedores con nombres similares. |
| ID del evento | Es el identificador numérico específico del evento, asignado por el proveedor. Combinado con el GUID del proveedor, el ID del evento permite identificar de forma precisa un tipo de evento particular. |
| ID del proceso | Muestra el identificador del proceso desde el cual se originó el evento, si se conoce. Esto es útil para rastrear eventos a procesos específicos dentro de tu aplicación o del sistema. |
| Nombre del proceso | Indica el nombre del proceso si este se encuentra activo en el momento del evento. Facilita la identificación del proceso responsable del evento. |
| ID del hilo | Muestra el identificador del hilo desde el cual se originó el evento, si se conoce. Permite identificar el hilo de ejecución específico dentro de un proceso que generó el evento. |
Si por defecto falta alguna columna que te resulte relevante, puedes añadirla fácilmente. Simplemente haz clic derecho en cualquiera de los encabezados de columna existentes y selecciona del menú contextual la columna que deseas añadir. Visual Studio la agregará a la tabla del Visor de eventos.
Al seleccionar un evento específico en la lista, se abrirá la ventana "Propiedades adicionales". Esta ventana proporciona información detallada sobre el evento seleccionado, dividida en las siguientes secciones:
- Propiedades comunes: Muestra una lista de propiedades que son comunes a todos los eventos, como la marca de tiempo, el proveedor, el nombre del evento, etc.
- Propiedades de carga (Payload Properties): Muestra propiedades específicas del evento seleccionado, que varían dependiendo del tipo de evento y del proveedor que lo generó. Estas propiedades contienen datos adicionales relevantes para el evento en particular.
- Pilas (Stacks): Para algunos eventos, también puedes ver las pilas de llamadas asociadas al evento. Las pilas de llamadas muestran la secuencia de funciones que se ejecutaron hasta llegar al punto donde se generó el evento, lo cual puede ser muy útil para depurar problemas o entender el flujo de ejecución.
Organizando los datos para un análisis eficiente
El Visor de eventos ofrece diversas opciones para organizar y filtrar los datos, facilitando el análisis y la identificación de patrones o problemas específicos:
- Ordenamiento de columnas: Todas las columnas, a excepción de la columna "Texto", son ordenables. Puedes hacer clic en el encabezado de una columna para ordenarla de forma ascendente o descendente. Esto te permite, por ejemplo, ordenar los eventos por marca de tiempo, proveedor, o ID de proceso, para identificar eventos relacionados o tendencias a lo largo del tiempo.
- Filtro de eventos: El Visor de eventos puede mostrar hasta 20,000 eventos a la vez. Para enfocarte en los eventos que te interesan, puedes utilizar el filtro de eventos. Al seleccionar el filtro de eventos, puedes especificar criterios para mostrar solo los eventos que cumplen con ciertas condiciones, como un proveedor específico, un nombre de evento, un ID de proceso, etc.
- Filtro de proveedor: El filtro de proveedor te muestra el porcentaje del número total de eventos que corresponden a cada proveedor. Esta información te da una idea de dónde se está invirtiendo el tiempo de ejecución de tu aplicación en términos de generación de eventos. Al pasar el ratón sobre un filtro de proveedor individual, verás una información sobre herramientas (tooltip) que muestra el nombre del proveedor, el porcentaje del total de eventos y el recuento de eventos para ese proveedor.
Habilitando eventos ETW personalizados
El Visor de eventos no solo muestra eventos del sistema y de Visual Studio, sino que también te permite visualizar eventos ETW (Event Tracing for Windows) personalizados que puedes instrumentar en tu propio código. Esto te brinda una flexibilidad aún mayor para monitorizar aspectos específicos del comportamiento de tu aplicación.

Para habilitar la visualización de eventos personalizados en el Visor de eventos, sigue estos pasos:
- Crea el código de eventos personalizados: Primero, necesitas instrumentar tu código con el código necesario para generar eventos ETW personalizados. El artículo original proporciona un ejemplo de código C++ para crear eventos personalizados. Si estás utilizando C#, también puedes crear eventos personalizados utilizando las clases de diagnóstico de .NET Framework.
- Abre el Perfilador de rendimiento y el Visor de eventos: Sigue los pasos descritos anteriormente para abrir el Perfilador de rendimiento (Alt + F2) y habilitar el Visor de eventos.
- Abre la configuración del Visor de eventos: Junto a la casilla de verificación del Visor de eventos en el Perfilador de rendimiento, encontrarás un icono de configuración (un engranaje). Haz clic en este icono para abrir el diálogo de configuración del Visor de eventos.
- Añade el proveedor personalizado: En el diálogo de configuración, busca la sección "Proveedores adicionales". Habilita la primera fila bajo esta sección. Luego, dependiendo del tipo de código de evento personalizado que estés utilizando, realiza una de las siguientes acciones:
- Para código de evento personalizado nativo (C++): Establece el "GUID del proveedor" basándote en el GUID que definiste para tu código de evento personalizado. Deja el valor de "Nombre del proveedor" vacío o utiliza su valor por defecto.
- Para código de evento personalizado C#: Establece el mismo valor de "Nombre del proveedor" que utilizaste al declarar tu código de evento. El sistema convertirá este nombre a un GUID en segundo plano, por lo que puedes dejar el campo "GUID del proveedor" vacío.
- Confirma la configuración: Haz clic en "Aceptar" para guardar la configuración del Visor de eventos.
- Recopila la traza de diagnóstico: Ejecuta tu aplicación y realiza el escenario que genera los eventos personalizados. Luego, detén la recopilación de datos como se describió anteriormente.
- Visualiza los eventos personalizados: Abre la traza de diagnóstico recopilada. Tus eventos personalizados deberían aparecer ahora en el Visor de eventos, junto con los eventos del sistema y de Visual Studio. Puedes utilizar los filtros para enfocarte en tus eventos personalizados, si lo deseas.
Siguiendo estos pasos, podrás integrar tus propios eventos personalizados en el Visor de eventos y obtener una visión aún más profunda del comportamiento de tu aplicación.
Preguntas frecuentes (FAQ)
¿Qué es el comando eventvwr?
El comando eventvwr es un comando de Windows que se utiliza para abrir el Visor de eventos de Windows, no el Visor de eventos dentro de Visual Studio. El Visor de eventos de Windows es una herramienta del sistema operativo que permite a los administradores y usuarios ver los registros de eventos del sistema operativo Windows, las aplicaciones y los servicios. Es una herramienta diferente al Visor de eventos integrado en Visual Studio, aunque ambos comparten el concepto de visualizar eventos para diagnóstico y análisis.
¿Para qué se utiliza el Visor de eventos?
El Visor de eventos, tanto en Visual Studio como en Windows, se utiliza principalmente para el diagnóstico y análisis de problemas en aplicaciones y sistemas. Permite:
- Identificar errores y advertencias: Los registros de eventos suelen contener información sobre errores, advertencias y otros eventos relevantes que ocurren durante la ejecución de una aplicación o del sistema.
- Analizar el rendimiento: El Visor de eventos puede mostrar eventos relacionados con el rendimiento, como el tiempo de carga de módulos, el inicio y finalización de hilos, etc., lo que ayuda a identificar cuellos de botella y áreas de mejora.
- Depurar problemas: La información detallada proporcionada por los eventos, incluyendo pilas de llamadas y propiedades específicas, puede ser crucial para depurar errores y entender la causa raíz de los problemas.
- Monitorizar el comportamiento: El Visor de eventos permite monitorizar el comportamiento de una aplicación a lo largo del tiempo, identificando patrones, tendencias y anomalías.
- Auditoría de seguridad: En el contexto del Visor de eventos de Windows, también se utiliza para la auditoría de eventos de seguridad, registrando accesos, intentos de acceso fallidos y otros eventos relacionados con la seguridad del sistema.
En resumen, el Visor de eventos es una herramienta esencial para cualquier desarrollador o administrador de sistemas que necesite comprender el comportamiento interno de sus aplicaciones y sistemas, diagnosticar problemas y optimizar el rendimiento.
