Compartir a través de


Aplicaciones de seguimiento e instrumentación

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

El seguimiento es una manera de supervisar la ejecución de su aplicación mientras está en funcionamiento. Puede agregar instrumentación de seguimiento y depuración a la aplicación de .NET Framework al desarrollarla y puede usar esa instrumentación tanto mientras desarrolla la aplicación como después de implementarla. Puede usar las System.Diagnostics.Traceclases , System.Diagnostics.Debugy System.Diagnostics.TraceSource para registrar información sobre errores y ejecución de aplicaciones en registros, archivos de texto u otros dispositivos para su análisis posterior.

El término instrumentación hace referencia a una capacidad de supervisar o medir el nivel de rendimiento de un producto y diagnosticar errores. En la programación, esto significa la capacidad de una aplicación para incorporar:

  • Seguimiento de código : recepción de mensajes informativos sobre la ejecución de una aplicación en tiempo de ejecución.

  • Depuración: localizar y corregir errores de programación en una aplicación en desarrollo. Para más información, vea Depuración.

  • Contadores de rendimiento: componentes que permiten realizar un seguimiento del rendimiento de la aplicación. Para más información, consulte Performance Counters.

  • Registros de eventos : componentes que permiten recibir y realizar un seguimiento de los eventos principales en la ejecución de la aplicación. Para obtener más información, vea la clase EventLog.

La instrumentación de la aplicación mediante la colocación de instrucciones de seguimiento en ubicaciones estratégicas del código es especialmente útil para las aplicaciones distribuidas. Mediante el uso de instrucciones de seguimiento, puede instrumentar una aplicación no solo para mostrar información cuando las cosas van mal, sino también para supervisar el rendimiento de la aplicación.

La TraceSource clase proporciona características de seguimiento mejoradas y se puede usar en lugar de los métodos estáticos de las clases anteriores Trace y Debug de seguimiento. Las clases Trace y Debug conocidas siguen siendo ampliamente usadas, pero se recomienda la clase TraceSource para nuevos comandos de seguimiento, como TraceEvent y TraceData.

Las Trace clases y Debug son idénticas, salvo que los procedimientos y las funciones de la Trace clase se compilan de forma predeterminada en compilaciones de versión, pero las de la Debug clase no.

Las Trace clases y Debug proporcionan los medios para supervisar y examinar el rendimiento de las aplicaciones durante el desarrollo o después de la implementación. Por ejemplo, puede usar la Trace clase para realizar un seguimiento de determinados tipos de acciones en una aplicación implementada a medida que se producen (por ejemplo, la creación de nuevas conexiones de base de datos) y, por tanto, puede supervisar la eficacia de la aplicación.

Seguimiento y depuración de código

Durante el desarrollo, puede usar los métodos de salida de la Debug clase para mostrar mensajes en la ventana Salida del entorno de desarrollo integrado (IDE) de Visual Studio. Por ejemplo:

Trace.WriteLine("Hello World!")
Debug.WriteLine("Hello World!")
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");

Cada uno de estos ejemplos mostrará "¡Hola Mundo!" en la ventana de salida cuando la aplicación se ejecute en el depurador.

Esto le permite depurar las aplicaciones y optimizar su rendimiento en función de su comportamiento en el entorno de prueba. Puede depurar la aplicación en la compilación de depuración con el atributo condicional Debug activado para así recibir toda la salida de la depuración. Cuando la aplicación esté lista para su lanzamiento, puede compilar la versión de lanzamiento sin activar el Debug atributo condicional, de modo que el compilador no incluya el código de depuración en el ejecutable final. Para obtener más información, vea How to: Compile Conditionally with Trace and Debug (Cómo: Compilar condicionalmente con seguimiento y depuración). Para obtener más información sobre las distintas configuraciones de compilación de su aplicación, consulte Compilación y construcción.

También puede realizar un seguimiento de la ejecución de código en una aplicación instalada mediante métodos de la Trace clase . Al colocar modificadores de seguimiento en el código, puede controlar si se realiza el seguimiento y cuál es su alcance. Esto le permite supervisar el estado de la aplicación en un entorno de producción. Esto es especialmente importante en una aplicación empresarial que usa varios componentes que se ejecutan en varios equipos. Puede controlar cómo se utilizan los interruptores después de la implementación mediante el archivo de configuración. Para obtener más información, consulte Cómo: Crear, Inicializar y Configurar Interruptores de Seguimiento.

Al desarrollar una aplicación para la que pretende usar el seguimiento, normalmente se incluyen mensajes de seguimiento y depuración en el código de la aplicación. Cuando esté listo para implementar la aplicación, puede compilar la versión final sin utilizar el atributo condicional de depuración. Sin embargo, puede activar el atributo condicional Trace para que el compilador incluya el código de seguimiento en el ejecutable. Para obtener más información, vea How to: Compile Conditionally with Trace and Debug (Cómo: Compilar condicionalmente con seguimiento y depuración).

Fases del seguimiento de código

Hay tres fases de seguimiento de código:

  1. Instrumentación — añades código de seguimiento a tu aplicación.

  2. Seguimiento : el código de seguimiento escribe información en el destino especificado.

  3. Análisis : evalúa la información de seguimiento para identificar y comprender los problemas de la aplicación.

Durante el desarrollo, todos los métodos de salida de depuración y seguimiento escriben información en la ventana Salida de Visual Studio de forma predeterminada. En una aplicación implementada, los métodos escriben información de seguimiento en los destinos que se especifiquen. Para obtener más información sobre cómo especificar un destino de salida para seguimiento o depuración, consulte Detectores de seguimiento.

A continuación se muestra una vista general de los pasos principales que suelen implicar el uso del seguimiento para analizar y corregir posibles problemas en las aplicaciones implementadas. Para obtener más información sobre cómo realizar estos pasos, consulte el vínculo adecuado.

Para usar el seguimiento en una aplicación
  1. Tenga en cuenta qué salida de seguimiento deseará recibir en el sitio después de haber implementado la aplicación.

  2. Cree un conjunto de interruptores. Para más información, vea Cómo configurar los interruptores de traza.

  3. Agregue las instrucciones de seguimiento al código de la aplicación.

  4. Determine en qué lugar desea que aparezca la salida de seguimiento y añada los escuchadores adecuados. Para obtener más información, vea Crear e inicializar agentes de escucha de seguimiento.

  5. Pruebe y depure la aplicación y el código de seguimiento que contiene.

  6. Compile la aplicación en código ejecutable mediante uno de los procedimientos siguientes:

    • Use el menú Compilar junto con la página Depurar del cuadro de diálogo Páginas de propiedades en el Explorador de soluciones. Úselo al compilar en Visual Studio.

      - o -

    • Use las directivas del compilador Trace y Debug para el método de línea de comandos de compilación. Para obtener más información, vea Compilar condicionalmente con seguimiento y depuración. Úselo al compilar desde la línea de comandos.

  7. Si se produce un problema durante el tiempo de ejecución, active el modificador de seguimiento adecuado. Para obtener más información, consulte Configuración de conmutadores de traza.

    El código de seguimiento escribe mensajes de seguimiento en un destino especificado, por ejemplo, una pantalla, un archivo de texto o un registro de eventos. El tipo de agente de escucha incluido en la colección Trace.Listeners determina el destino.

  8. Analice los mensajes de seguimiento para identificar y comprender el problema en la aplicación.

Instrumentación de seguimiento y aplicaciones distribuidas

Al crear una aplicación distribuida, es posible que sea difícil probar la aplicación de la manera en que se usará. Pocos equipos de desarrollo tienen la capacidad de probar todas las combinaciones posibles de sistemas operativos o exploradores web (incluidas todas las opciones de idioma localizado), o para simular el gran número de usuarios que tendrán acceso a la aplicación al mismo tiempo. En estas circunstancias, no puede probar cómo una aplicación distribuida responderá a grandes volúmenes, configuraciones diferentes y comportamientos únicos del usuario final. Además, muchas partes de una aplicación distribuida no tienen ninguna interfaz de usuario con la que puede interactuar directamente o ver la actividad de esas partes.

Sin embargo, puede compensar esto al permitir que las aplicaciones distribuidas describan determinados eventos de interés para los administradores del sistema, especialmente las cosas que van mal, mediante la instrumentación de la aplicación, es decir, colocando instrucciones de seguimiento en ubicaciones estratégicas en el código. A continuación, si se produce algo inesperado en tiempo de ejecución (por ejemplo, tiempo de respuesta excesivamente lento), puede determinar la causa probable.

Con las instrucciones de seguimiento puede evitar la tarea difícil de examinar el código fuente original, modificarlo, volver a compilarlo e intentar generar el error en tiempo de ejecución dentro del entorno de depuración. Recuerde que puede instrumentar una aplicación no solo para mostrar errores, sino también para supervisar el rendimiento.

Colocación estratégica de las instrucciones de seguimiento

Debe tener especial cuidado al colocar las instrucciones de seguimiento para su uso durante el tiempo de ejecución. Debe tener en cuenta qué información de seguimiento es probable que sea necesaria en una aplicación implementada, de modo que se cubran adecuadamente todos los escenarios de seguimiento probables. Sin embargo, dado que las aplicaciones que usan el seguimiento varían ampliamente, no hay directrices generales para la colocación estratégica del seguimiento. Para obtener más información sobre cómo colocar instrucciones de seguimiento, vea How to: Add Trace Statements to Application Code.

Salida del seguimiento

La salida del seguimiento se recopila mediante objetos denominados agentes de escucha. Un agente de escucha es un objeto que recibe la salida de seguimiento y la escribe en un dispositivo de salida (normalmente un archivo de texto, registro o ventana). Cuando se crea un agente de escucha, normalmente se agrega a la colección Trace.Listeners, lo que le permite recibir toda la salida del seguimiento.

La información de seguimiento siempre se escribe al menos en el destino de salida predeterminado de Trace, que es DefaultTraceListener. Si por algún motivo se ha eliminado DefaultTraceListener sin agregar otros agentes de escucha a la colección Listeners, no recibirá ningún mensaje de seguimiento. Para más información, vea Agentes de escucha de seguimiento.

En la tabla siguiente se enumeran los seis miembros Debug y los métodos Trace que escriben información de seguimiento.

Método Salida
Assert Es el texto especificado o, si no se especifica ninguno, la pila de llamadas. La salida solo se escribe si la condición especificada como argumento en la Assert instrucción es false.
Fail Es el texto especificado o, si no se especifica ninguno, la pila de llamadas.
Write Texto especificado.
WriteIf El texto especificado, si se cumple la condición establecida como argumento en la instrucción WriteIf.
WriteLine Es el texto especificado y un retorno de carro.
WriteLineIf El texto especificado y un retorno de carro si se satisface la condición especificada como argumento en la instrucción WriteLineIf.

Todos los agentes de escucha de la Listeners colección reciben los mensajes descritos en la tabla anterior, pero las acciones realizadas pueden variar en función del tipo de agente de escucha que reciba el mensaje. Por ejemplo, DefaultTraceListener muestra un cuadro de diálogo de aserción cuando recibe una notificación de Fail o de Assert con errores, pero TextWriterTraceListener simplemente escribe el resultado en su secuencia.

Puede generar resultados personalizados implementando su propio agente de escucha. Un agente de escucha de seguimiento personalizado podría, por ejemplo, mostrar los mensajes en un cuadro de mensaje o conectarse a una base de datos para agregar mensajes a una tabla. Todos los escuchadores personalizados deben admitir los seis métodos mencionados anteriormente. Para obtener más información sobre cómo crear agentes de escucha definidos por el desarrollador, consulte TraceListener en la referencia de .NET Framework.

Los métodos Write y WriteLine siempre escriben el texto que usted especifique. Assert, WriteIfy WriteLineIf requieren un argumento booleano que controla si escriben o no el texto especificado; escriben el texto especificado solo si la expresión es true (para WriteIf y WriteLineIf) o false (para Assert). El Fail método siempre escribe el texto especificado. Para obtener más información, vea How to: Add Trace Statements to Application Code (Cómo: Agregar instrucciones de seguimiento al código de aplicación ) y la referencia de .NET Framework.

Problemas de seguridad

Si no deshabilita el seguimiento y la depuración antes de implementar una aplicación de ASP.NET, la aplicación puede revelar información sobre sí misma que un programa malintencionado podría aprovechar. Para obtener más información, vea Cómo: Compilar condicionalmente con Trace y Debug, Compilar y construir, y Cómo: Crear, inicializar y configurar conmutadores de rastreo. La depuración también es configurable a través de Internet Information Services (IIS).

Consulte también