2010-11-19 8 views
5

Allego un debugger passando '-d' come parametro della riga di comando alla mia app della console. Ciò fa sì che venga chiamato il seguente codice;C# - Come continuare dopo il mancato collegamento del debugger - 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"); 
} 

Dopo che la finestra JIT Visual Studio 2010 si apre a volte cambiare idea e non vogliono mettere a punto, in modo da chiudere la finestra. Se non ne inserisco uno, l'applicazione si chiude immediatamente senza che venga scritto nulla sulla console.

So che si tratta di un caso di utilizzo marginale, dovrei semplicemente rimuovere "-d" dalla riga di comando se non voglio eseguire il debug. La ragione della mia domanda è che desidero capire cosa sta succedendo.

Ho pensato che il blocco finale è sempre chiamato, inoltre, mi aspetto che la mia applicazione continui se non si riesce a collegare un debugger.

  • Perché non viene stampato nulla sulla console se si rifiuta di collegare un debugger?
  • Debugger.Launch() chiama System.Exit in caso di errore?

EDIT Grazie @ Moo-Juice Ora so che un valore di ritorno di false implica un debugger è stato già fissato, ma le domande di cui sopra rimangono irrisolti.

+0

Il valore booleano restituito è 'false' se un debugger è già collegato * *. –

risposta

0

Sei sicuro che il blocco finally{} non viene eseguito?

La console potrebbe spegnersi in modo così rapido e simile all'istante?

+0

L'esecuzione con ctrl + F5 dovrebbe impedirlo – Kell

Problemi correlati