Pregunta

Estoy un poco confundido sobre cómo usar las clases .NET Trace y Debug.

¿Por qué te molestaría usar Trace en lugar de Depurar?

Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()

Debug.WriteLine()
Debug.Assert()

También, entiendo que las declaraciones de depuración se ignoran cuando está en el modo de configuración de lanzamiento, pero si las declaraciones de seguimiento se aplican todo el tiempo, ¿cómo afecta esto al rendimiento?

¿Fue útil?

Solución

En el nivel más simple, tienen diferentes interruptores de compilación, es decir, Debug.WriteLine , etc., solo se activa si tiene el símbolo de compilación DEBUG (no es común para las versiones de lanzamiento) , where-as Trace.WriteLine generalmente se incluirá incluso en las versiones de lanzamiento.

La ruta Trace tiene escuchas de rastreo personalizables, que se pueden instalar a través de la configuración; Debug generalmente va a un depurador como el oyente. Por supuesto, hay sistemas de rastreo de terceros que ofrecen mucha más flexibilidad.

Otros consejos

Puedes activar y desactivar de forma independiente con un conmutador de compilador, si vas a la página de compilación de las propiedades de tu proyecto, tienes algunas casillas de verificación allí.

La regla de oro para mí es que uso la depuración para la información de depuración real, es decir, el valor de la variable x en este punto es ... etc, y el rastreo para rastrear el flujo de control a través de mi aplicación (más como spam).

Como usted dice, las llamadas de rastreo solo se ejecutan cuando está en modo de liberación. La compilación en el modo Liberación tiene algunos beneficios de rendimiento que puede desear en la aplicación final, y puede haber otras razones por las que desee activar el modo Liberación. Sin embargo, puede haber ocasiones en las que desee registrar información en la consola de seguimiento, que puede verse con aplicaciones como DbgView de SysInternal . Normalmente, estos son mensajes que no necesariamente desea enviar a una salida de registro, o que siempre desea tener disponibles para fines de depuración, incluso si el usuario ha desactivado el registro.

Ciertamente, no querría enviar mucha información a la consola de Trace, ya que impone una penalización de rendimiento, pero es posible que alguna información crítica sea apropiada.

He tendido a usar Trace (con un TraceSwitch asociado) para los esfuerzos de registro en los entornos de lanzamiento. Un rápido ajuste de app.config puede dar diferentes niveles de registro sin la necesidad de una recompilación (lo que podría causar un problema). desaparece de todos modos) o la necesidad de adjuntar un depurador. Especialmente útil para los problemas que solo ocurren en las máquinas del cliente por cualquier motivo: lo he utilizado para descartar con éxito el cierre de sesión de una clase FTP (en el pasado Framework 1.1 días) para ayudar a diagnosticar problemas de transferencia de red entre dos compañías

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top