Domanda

Sembra che

sono sostanzialmente gli stessi, con la notevole eccezione che l'utilizzo di Debug è compilato in una configurazione di rilascio.

Quando useresti l'uno e non l'altro? L'unica risposta a questa che ho scavato finora è solo che usi la classe Debug per generare output che vedi solo nella configurazione di debug e Traccia rimarrà in una configurazione di rilascio, ma non risponde alla domanda nella mia testa.

Se intendi strumentare il tuo codice, perché mai dovresti usare Debug , poiché Traccia può essere disattivato senza ricompilare?

È stato utile?

Soluzione

La differenza principale è quella che indichi: il debug non è incluso nella versione, mentre Trace lo è

La differenza prevista, a quanto ho capito, è che i team di sviluppo potrebbero utilizzare Debug per emettere messaggi descrittivi ricchi che potrebbero rivelarsi troppo dettagliati (o rivelatori) per i consumatori di un prodotto, mentre Trace è destinato a emettere i tipi di messaggi che sono più specificamente orientati alla strumentazione di un'applicazione.

Per rispondere alla tua ultima domanda, non riesco a pensare a un motivo per usare Debug per strumentare un pezzo di codice che intendevo rilasciare.

Spero che questo aiuti.

Altri suggerimenti

Il debug viene utilizzato a puro scopo di debug. Emette ricchi messaggi nell'esecuzione del debug (modalità debug).

La traccia aiuta nel debug delle applicazioni, nella correzione di bug e nella profilazione (dopo il rilascio).

La classe Debug non è di alcuna utilità in modalità di rilascio.

L'unica differenza tra trace e debug è che le istruzioni trace sono incluse di default nel programma quando è compilato in una build di rilascio, mentre le istruzioni debug no.

Pertanto, la classe di debug viene utilizzata principalmente per il debug in fase di sviluppo, mentre trace può essere utilizzato per test e ottimizzazione dopo che l'applicazione è stata compilata e rilasciata.

Per blocchi di codice sensibili alle prestazioni, lasciare Trace compilato ma disabilitato potrebbe fare la differenza.

Vorrei utilizzare log4net per la traccia in quanto le sue capacità sono molto più flessibili e robuste.

Ma per i veri messaggi di debug che non intendo mai vedere a nessuno diverso da me o da un tester interno, probabilmente rimarrei con Debug.

Hai risposto alla tua domanda. Se i messaggi di debug rimanevano, le persone potevano vederli. Ad esempio, supponiamo che lo facciate:

Debug.WriteLine("Connecting to DB with username: blah and PW: pass");

Chiunque decompila il tuo codice può vederlo. Ma questo potrebbe essere qualcosa di vitalemente importante da sapere durante i test.

La traccia è diversa. Se hai intenzione di fare Trace, probabilmente userò semplicemente log4net.

Questa è la differenza completa tra Traccia e Debug: Sia Debug che Trace utilizzano lo spazio dei nomi System.Diagnostics.

Debug

  • Utilizza la classe Debug.
  • Utilizza nella build di debug.
  • Utilizza il tempo di sviluppo dell'applicazione.
  • In modalità Debug il compilatore inserisce del codice di debug all'interno dell'eseguibile.
  • La classe di debug funziona solo in modalità debug.
  • L'analisi delle prestazioni non può essere eseguita utilizzando Debug.
  • Il debug utilizza per trovare errori nel programma.
  • Per Debug possiamo usare il metodo Debug.Write ().
  • Il debug viene eseguito nello stesso thread dell'esecuzione del programma principale.

traccia

  • Utilizza la classe Trace.
  • L'istruzione di traccia include per impostazione predefinita quando il programma è stato compilato nella build rilasciata.
  • La classe di traccia viene utilizzata per il test e l'ottimizzazione anche dopo la compilazione e il rilascio di un'applicazione.
  • La classe di traccia funziona sia in modalità Debug sia in modalità di rilascio.
  • La traccia viene eseguita in thread diversi dal programma principale esegui thread.
  • Per Trace possiamo usare il metodo Trace.Write ().
  • Utilizza il tempo di distribuzione dell'applicazione.

riferimento: csharp corner

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