Domanda

Probabilmente dovrei già saperlo, ma non ne sono sicuro e non lo vedo documentato.

Uso System.Diagnostics.Debug.WriteLine abbastanza spesso durante il processo di sviluppo per essere in grado di tenere traccia delle modifiche a variabili o eccezioni mentre eseguo il debug del codice. Questo ha lo scopo di rendere più semplice lo sviluppo e la comprensione di ciò che sta accadendo solo durante lo sviluppo. Normalmente commento il codice o lo cancello quando vado in produzione.

Mi chiedo cosa succede se dimentico di commentare il codice. Ad esempio, supponiamo che durante il ciclo di sviluppo stia monitorando le informazioni di errore che potrebbero registrare una puntura di connessione nella finestra di output utilizzando Debug.Write Line. Questo ovviamente è OK durante lo sviluppo, ma mi chiedo se quando vado dal vivo, se c'è un rischio qui. Qualcuno può collegare un debugger al mio eseguibile live e intercettare questo output? O è qualcosa che produce solo output in Visual Studio?

E che dire di quando passiamo dal debug alla versione? Questo codice viene ignorato dal compilatore se compiliamo per il rilascio?

È stato utile?

Soluzione

Tutti i membri della classe Debug sono contrassegnati con ConditionalAttribute , quindi i siti di chiamata non verranno compilati in una build di rilascio.

Altri suggerimenti

System.Diagnostics.Debug le chiamate al metodo sono presenti solo quando " DEBUG " il simbolo di compilazione condizionale è definito. Per impostazione predefinita, il " DEBUG " il simbolo è definito solo per build di debug.

  

Compilatori che supportano    ConditionalAttribute ignora le chiamate a   questi metodi a meno che "DEBUG" è   definito come una compilazione condizionale   simbolo.

Poiché tutti i metodi Debug hanno l'attributo [Condizionale (" DEBUG ")] su di essi, se passi da Debug a Release non dovrai preoccuparti perché le chiamate a quei metodi verranno rimosse (insieme con le altre ottimizzazioni di una build di rilascio).

Le informazioni di debug sono visibili solo quando si esegue in Modalità debug . In Modalità di rilascio non saranno visibili dichiarazioni di debug (puoi usare Traccia invece di Debug se vuoi che queste dichiarazioni siano visibili in modalità di rilascio) .

http://support.microsoft.com/kb/815788

Fornendoti la compilazione senza l'opzione / d: DEBUG o #define DEBUG , le tue chiamate WriteLine non verranno fisicamente presenti nel tuo codice di rilascio; non c'è modo per terzi di recuperare qualsiasi informazione da queste chiamate, dato che non sono letteralmente presenti nella versione di rilascio.

Maggiori dettagli qui: Classe di debug (System.Diagnostics) su MSDN

Quasi tutti i membri di Debug sono contrassegnati con ConditionalAttribute. Compilatori come C # salteranno le chiamate a questi metodi durante la compilazione di Release, quindi sei al sicuro.

Informazioni sulla modalità qui: http://msdn.microsoft.com/en-us/ biblioteca / system.diagnostics.debug.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top