Pregunta

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 realizar un seguimiento de los cambios en las variables o excepciones a medida que depuro el código. Esto está destinado a hacer que el desarrollo y la comprensión de lo que sucede sea más fácil solo durante el desarrollo. Normalmente comento el código o lo elimino cuando voy a producción.

Me pregunto qué pasará si olvido comentar el código. Digamos, por ejemplo, que durante el ciclo de desarrollo, estoy rastreando información de error que puede registrar una picadura de conexión en la ventana de salida usando Debug.Write Line. Obviamente, esto está bien durante el desarrollo, pero me pregunto si cuando salgo en vivo, 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 cambiamos de depuración a versión? ¿Este código es ignorado por el compilador si compilamos para su lanzamiento?

¿Fue útil?

Solución

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 versión de lanzamiento.

Otros consejos

System.Diagnostics.Debug las llamadas al método solo están presentes cuando " DEPURACIÓN " Se define el símbolo de compilación condicional. Por defecto, el " DEPURACIÓN " el símbolo se define solo para compilaciones de depuración.

  

Compiladores que admiten    ConditionalAttribute ignora las llamadas a   estos métodos a menos que "DEPURACIÓN" es   definido como una compilación condicional   símbolo.

Dado que todos los métodos de depuración tienen el atributo [Condicional (" DEBUG ")] en ellos, si cambia de Debug a Release no tendrá que preocuparse por ello, ya que se eliminarán las llamadas a esos métodos (junto con con las otras optimizaciones de una versión de lanzamiento).

La información de depuración solo es visible cuando se ejecuta en Modo de depuración . En el modo Release no se verán las declaraciones de depuración (puede usar Trace en lugar de Debug si desea que estas declaraciones estén visibles en el modo Release) .

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

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

Más detalles aquí: Clase de depuración (System.Diagnostics) en MSDN

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

Información del modo aquí: http://msdn.microsoft.com/en-us/ library / system.diagnostics.debug.aspx

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