2011-09-06 19 views
10

Me pregunto si debería llamar al if(Debugger.IsAttached) antes de llamar a otras funciones de depuración y depuración.¿Debo verificar Debugger.IsAttached antes de Debugger.Break o Debug.WriteLine?

if(Debugger.IsAttached) { Debugger.Break(); } 

vs

Debugger.Break() // Without checking if Debugger is actually attached 
+0

La 2da manera funciona, lo suficientemente fácil como para probarse. La ventana del depurador de jit no es particularmente bonita y esto debe evitarse en el código de producción, ya que bloquea el programa. –

Respuesta

14

Depende de por qué estás llamando al método Break(). De acuerdo con la documentation:

Si ningún depurador asociado, los usuarios se les pregunta si quieren adjuntar un depurador .

Si no desea molestar a los usuarios que no están depurando actualmente, primero debe probar el archivo adjunto. Si no le importa (o de hecho le gustaría recibir el aviso), entonces no lo revise.

+0

+1 a usted. Entendí completamente la pregunta, y lo hiciste bien. – David

+0

¿Entonces le pedirá al usuario que conecte el depurador incluso si el programa se ejecuta en modo Release? – flai

+2

@Jaakko Creo que eso es correcto. Los depuradores se pueden unir a los programas compilados en modo de lanzamiento (aunque su utilidad es reducida, ya que el modo de lanzamiento no generará archivos .pdb o 'nop's útiles.) – dlev

Cuestiones relacionadas