2008-12-31 18 views
8

Estoy un poco confundido sobre cómo usar las clases .NET Trace y Debug.Declaraciones de seguimiento y depuración

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

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

Debug.WriteLine() 
Debug.Assert() 

Además, entiendo que las declaraciones de depuración se ignoran cuando el modo de configuración de lanzamiento, pero si se aplican instrucciones de seguimiento todo el tiempo, ¿cómo afecta esto el rendimiento?

+0

Posible duplicado: http://stackoverflow.com/questions/179868/trace-vs-debug-in-net-bcl – user

Respuesta

7

Al nivel más simple, que tienen diferentes interruptores de compilación - es decir, Debug.WriteLine etc solamente se puede cambiar entre si tiene el símbolo DEBUG compilación (no es común para las versiones de lanzamiento), donde -como Trace.WriteLine normalmente se incluirá también en las versiones de lanzamiento.

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

2

Puede activar y desactivar de forma independiente con un interruptor de compilación, si va a la página de compilación de las propiedades de su proyecto, tiene algunas casillas allí.

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

2

Como dices, las llamadas de seguimiento solo se ejecutan cuando estás en modo de lanzamiento. La compilación en modo de lanzamiento tiene algunos beneficios de rendimiento que puede desear en la aplicación final, y puede haber otros motivos por los que desee activar el modo de lanzamiento. Sin embargo, puede haber ocasiones en las que desee registrar información en la consola de seguimiento, que se puede ver con aplicaciones como SysInternal's DbgView. Estos suelen ser mensajes que no necesariamente desea enviar a un resultado de registro, o que siempre desea tener disponibles para la depuración, incluso si el usuario ha desactivado el registro.

Sin duda no le gustaría enviar mucha información a la consola Trace, ya que impone una penalización de rendimiento, pero es posible que se necesite cierta información crítica.

2

He tendido a utilizar Trace (con un TraceSwitch asociado) para los esfuerzos de registro en entornos de lanzamiento: un ajuste rápido de la aplicación.config puede proporcionar diferentes niveles de registro sin necesidad de recompilación (lo que podría hacer un problema desaparece de todos modos) o la necesidad de adjuntar un depurador. Especialmente útil para problemas que solo ocurren en las máquinas del cliente por cualquier razón: lo he usado para volcar exitosamente el inicio de sesión de una clase FTP (en el antiguo Framework 1.1 días) para ayudar a diagnosticar problemas de transferencia de red entre dos compañías

Cuestiones relacionadas