Rastreo vs depuración en .NET BCL

Parece que el

  • System.Diagnostics.Debug , y
  • System.Diagnostics.Trace

son prácticamente lo mismo, con la notable excepción de que el uso de la depuración se comstack en una configuración de lanzamiento.

¿Cuándo usarías uno y no el otro? La única respuesta a esto que he desenterrado hasta ahora es que usas la clase Depuración para generar resultados que solo ves en la configuración de depuración, y el seguimiento permanecerá en una configuración de lanzamiento, pero eso no responde la pregunta en realidad. mi cabeza.

Si va a instrumentar su código, ¿por qué alguna vez usaría la depuración , ya que Trace se puede desactivar sin una recomstackción?

La principal diferencia es la que usted indica: la depuración no se incluye en el lanzamiento, mientras que el rastreo está.

La diferencia intencionada, según entiendo, es que los equipos de desarrollo pueden usar Debug para emitir mensajes ricos y descriptivos que pueden resultar demasiado detallados (o reveladores) para los consumidores de un producto, mientras que Trace está destinado a emitir los tipos de Mensajes que están más específicamente orientados a instrumentar una aplicación.

Para responder a tu última pregunta, no puedo pensar en una razón para usar Debug para instrumentar un fragmento de código que pretendía liberar.

Espero que esto ayude.

La depuración se utiliza para puros propósitos de depuración. Emite mensajes enriquecidos en la ejecución de la depuración (modo de depuración).

El rastreo ayuda en la depuración de la aplicación, la corrección de errores y la creación de perfiles (después del lanzamiento).

La clase de depuración no es de ninguna utilidad en el modo de lanzamiento.

La única diferencia entre el seguimiento y la depuración es que las instrucciones de seguimiento se incluyen de forma predeterminada en el progtwig cuando se comstack en una versión de comstackción, mientras que la statement de depuración no lo está.

Por lo tanto, la clase de depuración se usa principalmente para la depuración en la fase de desarrollo, mientras que la traza se puede usar para probar y optimizar una vez que la aplicación se comstack y libera.

Para bloques de código altamente sensibles al rendimiento, dejar Trace comstackdo pero deshabilitado puede hacer una diferencia de rendimiento.

Me gustaría usar log4net para el rastreo, ya que sus capacidades son mucho más flexibles y robustas.

Pero para los verdaderos mensajes de depuración que nunca pretendo que nadie más que yo o un probador interno vean, probablemente me quedaría con la depuración.

Has respondido tu propia pregunta. Si los mensajes de depuración permanecieran, la gente podría verlos. Por ejemplo, digamos que sí:

 Debug.WriteLine ("Conexión a DB con nombre de usuario: blah y PW: pass");

Cualquiera que decompile tu código puede ver eso. Pero eso puede ser algo de vital importancia para que lo sepas durante las pruebas.

El rastro es diferente. Si vas a hacer un seguimiento, es probable que solo use log4net.

Esta es la diferencia total entre Rastreo y Depuración: tanto la depuración como el rastreo utilizan el espacio de nombres System.Diagnostics.

Depurar

  • Utiliza la clase de depuración.
  • Se utiliza en la comstackción de depuración.
  • Utiliza el tiempo de desarrollo de la aplicación.
  • En el modo de depuración, el comstackdor inserta algún código de depuración dentro del ejecutable.
  • La clase de depuración solo funciona en modo depuración.
  • El análisis de rendimiento no se puede hacer utilizando la depuración.
  • La depuración se utiliza para encontrar el error en el progtwig.
  • Para la depuración podemos usar el método Debug.Write ().
  • La depuración se ejecuta en el mismo hilo que el progtwig principal.

Rastro

  • Utiliza la clase Trace.
  • La statement de seguimiento se incluye de forma predeterminada cuando el progtwig se comstack en la versión publicada.
  • La clase de rastreo se usa para pruebas y optimización incluso después de comstackr y lanzar una aplicación.
  • La clase de seguimiento funciona tanto en el modo de depuración de casos como en el modo de lanzamiento.
  • Trace se ejecuta en diferentes subprocesos.
  • Para Trace podemos usar el método Trace.Write ().
  • Utiliza el tiempo de despliegue de la aplicación.

referencia: esquina csharp