2010-11-19 7 views
5

Adjunto un depurador pasando '-d' como un parámetro de línea de comando a mi aplicación de consola. Eso hace que se llame al siguiente código;C# - Cómo continuar después de no poder adjuntar el depurador - System.Diagnostics.Debugger.Launch()

bool attachedDebugger = false; 
try 
{ 
    attachedDebugger = System.Diagnostics.Debugger.Launch(); 
} 
catch (Exception) { } 
finally 
{ 
    Console.WriteLine(attachedDebugger ? "Debugger Attached" : "Failed to attach debugger"); 
} 

Después de la Studio 2010 Visual JIT ventana aparece a veces cambiar de opinión y no quiere depurar, por lo que cerrar el diálogo. Si no adjunto uno, la aplicación se cierra inmediatamente sin que se escriba nada en la consola.

Sé que esto es un poco un caso de uso de borde, debería simplemente eliminar la '-d' de la línea de comandos si no quiero depurar. El motivo de mi pregunta es que deseo entender lo que está sucediendo.

Pensé que el bloque finally es siempre llamado, además, esperaría que mi aplicación continúe si no adjuntamos un depurador.

  • ¿Por qué no se imprime nada en la consola si decido no conectar un depurador?
  • ¿Debugger.Launch() llama al si no se puede conectar?

EDITAR Gracias @ Moo-Jugo ahora saben que un valor de retorno de false implica un depurador ya estaba adjunto, pero las preguntas anteriores siguen sin resolverse.

+0

El valor booleano devuelto es 'false' si un depurador se * ya unido *. –

Respuesta

0

¿Está seguro que el bloque finally{} no se está ejecutando?

¿Podría la consola simplemente apagarse tan rápido, se ve como si fuera instantáneamente?

+0

Correr con Ctrl + F5 debería evitar eso – Kell

Cuestiones relacionadas