Domanda

Sono un po 'confuso su come usare le classi .NET Trace e Debug.

Perché dovresti preoccuparti di usare Trace invece di Debug?

Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()

Debug.WriteLine()
Debug.Assert()

Inoltre, capisco che le istruzioni di debug vengono ignorate quando ci si trova in modalità di configurazione Release, ma se le istruzioni trace si applicano continuamente, in che modo ciò influisce sulle prestazioni?

È stato utile?

Soluzione

Al livello più semplice, hanno diversi switch di compilazione: ad esempio Debug.WriteLine ecc viene attivato solo se si dispone del simbolo di compilazione DEBUG (non comune per le build di rilascio) , dove -code Trace.WriteLine viene generalmente incluso anche nelle build di rilascio.

Il percorso Trace ha tracciatori di ascolto personalizzabili, che possono essere collegati tramite la configurazione; Debug generalmente passa a un debugger come listener. Naturalmente, ci sono sistemi di traccia di terze parti che offrono molta più flessibilità.

Altri suggerimenti

Puoi attivare e disattivare in modo indipendente con un interruttore del compilatore, se vai alla pagina di costruzione delle proprietà del tuo progetto, ci sono alcune caselle lì.

La regola empirica per me è che uso il debug per le informazioni di debug effettive, ovvero il valore della variabile x a questo punto è ... ecc. e Traccia per tracciare il flusso di controllo attraverso la mia app (più spam).

Come dici tu, le chiamate di traccia vengono eseguite solo quando sei in modalità di rilascio. La compilazione in modalità Rilascio presenta alcuni vantaggi prestazionali che potresti desiderare nell'applicazione finale e potrebbero esserci altri motivi per cui vuoi attivare la modalità Rilascio. Tuttavia, potrebbero verificarsi momenti in cui si desidera registrare informazioni sulla console di traccia, che possono essere visualizzate con applicazioni come DbgView di SysInternal . Si tratta in genere di messaggi che non si desidera necessariamente inviare a un output del registro o che si desidera sempre avere a disposizione per scopi di debug anche se l'utente ha disattivato la registrazione.

Non vorrai certo inviare molte informazioni alla console Trace poiché impone una penalità per le prestazioni, ma alcune informazioni critiche potrebbero essere appropriate.

Ho avuto la tendenza a utilizzare Trace (con un TraceSwitch associato) per gli sforzi di registrazione negli ambienti di rilascio: una rapida modifica di app.config può quindi fornire diversi livelli di registrazione senza la necessità di ricompilare (il che potrebbe creare un problema andare via comunque) o la necessità di collegare un debugger. Particolarmente utile per i problemi che si verificano solo sui computer dei clienti per qualsiasi motivo: l'ho usato per scaricare correttamente la disconnessione da una classe FTP (ai vecchi tempi di Framework 1.1) per aiutare a diagnosticare i problemi di trasferimento di rete tra due società

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