writeline print log example debug .net debugging system.diagnostics

.net - print - System.Diagnostics.Debug.WriteLine en el código de producción



system diagnostics c# example (6)

Probablemente ya debería saber esto, pero no estoy seguro y no lo veo documentado.

Utilizo System.Diagnostics.Debug.WriteLine con bastante frecuencia durante el proceso de desarrollo para poder seguir los cambios a las variables o excepciones mientras depuro el código. Esto tiene como objetivo hacer que el desarrollo y la comprensión de lo que sucede sean más fáciles solo durante el desarrollo. Normalmente, o bien comento el código o lo elimino cuando voy a producción.

Me pregunto qué pasará si me olvido de comentar el código. Digamos, por ejemplo, que durante el ciclo de desarrollo, estoy rastreando la información de error que puede registrar una conexión en la ventana de salida usando Debug.Write Line. Esto obviamente está bien mientras se desarrolla, pero me pregunto si cuando entre en funcionamiento, si hay un riesgo aquí. ¿Alguien puede adjuntar un depurador a mi ejecutable en vivo y atrapar esta salida? ¿O es algo que solo produce resultados en Visual Studio?

¿Y qué pasa cuando pasamos de la depuración a la versión? ¿Este código es ignorado por el compilador si compilamos para el lanzamiento?


Casi todos los miembros de Debug están marcados con ConditionalAttribute. Tales compiladores como C # omitirán las llamadas a esos métodos durante la versión de lanzamiento, por lo que está en el lado seguro.

Información de modo aquí: System.Diagnostics.Debug


Como todos los métodos Debug tienen el atributo [Conditional ("DEBUG")], si cambia de Debug a Release, no tendrá que preocuparse ya que las llamadas a esos métodos se eliminarán (junto con las otras optimizaciones). de una compilación Release).


La información de depuración solo está visible cuando se ejecuta en modo Depuración . En el modo de lanzamiento, no estarán visibles las instrucciones de depuración (puede usar Trace en lugar de Debug si desea que estas declaraciones sean visibles en el modo de lanzamiento).

http://support.microsoft.com/kb/815788


Siempre que compile sin la opción /d:DEBUG o #define DEBUG , sus llamadas de WriteLine no se presentarán físicamente en su código de publicación; no hay forma de que un tercero recupere ninguna información de estas llamadas, ya que literalmente no están en la versión de lanzamiento.

Más detalles aquí: System.Diagnostics.Debug


Todos los miembros de la clase Debug están marcados con ConditionalAttribute , por lo que los sitios de llamadas no se compilarán en una compilación de versión.


System.Diagnostics.Debug llamadas al método System.Diagnostics.Debug solo están presentes cuando se define el símbolo de compilación condicional "DEBUG". De forma predeterminada, el símbolo "DEBUG" está definido solo para compilaciones de depuración.

Los compiladores que admiten ConditionalAttribute ignoran las llamadas a estos métodos a menos que "DEBUG" se defina como un símbolo de compilación condicional.