2010-02-19 19 views

Respuesta

15

Ambos se compilan condicionalmente utilizando el atributo [Conditional].

Si el indicador TRACE se define en la compilación, las llamadas a la clase Trace darán como resultado que se escriba una salida de rastreo. De forma predeterminada, TRACE se define tanto en modo de depuración como de versión. Si la bandera no está definida, no pasará nada.

Si se define el indicador DEBUG, las llamadas a la clase Debug dan como resultado que la salida se escriba en la secuencia de depuración. De manera predeterminada, DEBUG solo se define en modo de depuración.

La otra gran diferencia es que con el rastreo es fácil personalizar el trace listeners y decidir más adelante qué quiere hacer con la salida de rastreo. Es más flexible que la salida de depuración, y generalmente es más adecuado para iniciar sesión en una aplicación de producción.

+0

Así que si el indicador de traza se define por defecto, hay una manera para desarmarlo en los modos de liberación o depuración? – Carlo

+1

@Carlo: Claro, está en las propiedades del proyecto, pestaña Construir. Hay dos casillas de verificación, una que dice "Definir constante DEBUG" y otra que dice "Definir constante de TRACE". Esos corresponden a cómo se comportarán las clases 'Debug' y' Trace' y sus correspondientes métodos 'Write'. – Aaronaught

+0

¡Genial! Gracias, gran respuesta! – Carlo

2

La diferencia está en el modo de lanzamiento.

Debug.Write no se compilará en el código cuando el símbolo DEBUG no esté definido, es decir, se compila en modo Release.

Sin embargo, Trace.Write se compilará tanto en modo Debug como en modo Release.

4

DEBUG: DEBUG settings

RELEASE: RELEASE settings

Como se ve el constante TRACE está habilitada en ambas configuraciones por defecto

Cuestiones relacionadas