¿Por qué querría usar el modo de depuración del compilador .NET?
-
19-08-2019 - |
Pregunta
Tenía curiosidad por saber cuáles son las diferencias entre los modos de depuración y liberación del compilador .NET y encontré estas preguntas sobre debug vs release en .NET y razones por las que la versión se comportará de manera diferente a la depuración . Hasta este punto, realmente no he prestado mucha atención a estos modos de compilación. Ahora lo haré.
Mi pregunta es, suponiendo que estoy usando un marco de prueba (NUnit) y TDD, ¿tendría algún problema si simplemente compilara siempre en modo de lanzamiento?
Solución
Estás usando TDD. Tú escribes tu prueba. La prueba falla. Escribes el código para pasar la prueba. El código falla. Miras el código que escribiste y no puedes ver ninguna razón obvia por la que falla. ¿Razona un poco más o inicia la prueba en el depurador (usando TestDriven.Net) y realiza la prueba? Tal vez no soy lo suficientemente inteligente como para descubrir siempre por qué mi código no funciona, pero generalmente hago esto último cuando estoy perplejo.
Otros consejos
El modo de depuración desactiva muchas de las optimizaciones. Esto significa que cuando obtenga un seguimiento de la pila, se verá más como el código original.
Una diferencia bastante significativa entre las configuraciones de depuración y liberación es que las llamadas a métodos marcados con ConditionalAttribute
solo se compilan si se define el símbolo asociado. Por lo tanto, sus llamadas a los métodos de la clase Debug
no se incluyen si compila utilizando la configuración de lanzamiento.
Esto le permite adornar su código con aserciones y código que arroja información a la consola y, sin embargo, puede estar seguro de que ninguno de esos gastos generales aparecerá en su código de envío.
Además, editar y continuar es una herramienta extremadamente útil y se basa en la metainformación que se omite de las versiones de lanzamiento.
Para depuración.
Como dijo tvanfosson, incluso si normalmente no usa el depurador (sé que no), a veces necesita hacerlo.