Trace- und Debug-Anweisungen

8

Ich bin ein wenig verwirrt darüber, wie man die .NET Trace und Debug Klassen benutzt.

Warum sollten Sie Trace anstelle von Debug verwenden?

%Vor%

Ich verstehe auch, dass Debug-Anweisungen ignoriert werden, wenn Sie sich im Konfigurationsmodus "Release" befinden, aber wenn Trace-Anweisungen die ganze Zeit gelten, wie wirkt sich dies auf die Leistung aus?

    
Vince Panuccio 31.12.2008, 00:11
quelle

4 Antworten

7

Auf der einfachsten Ebene haben sie verschiedene Kompilierungsschalter - dh Debug.WriteLine etc wird nur umgeschaltet, wenn Sie das DEBUG Kompilierungssymbol haben (nicht üblich für Release Builds), wobei Trace.WriteLine normalerweise gerade enthalten ist in Release-Builds.

Die Route Trace verfügt über anpassbare Trace-Listener, die über die Konfiguration geladen werden können; Debug wird im allgemeinen als Listener an einen Debugger übergeben. Natürlich gibt es 3rd-Party-Trace-Systeme, die viel mehr Flexibilität bieten.

    
Marc Gravell 31.12.2008, 10:44
quelle
2

Sie können mit einem Compiler-Schalter unabhängig voneinander ein- und ausschalten. Wenn Sie die Build-Seite Ihrer Projekteigenschaften aufrufen, haben Sie dort einige Kontrollkästchen.

Die Faustregel für mich ist, dass ich debuggen für tatsächliche Debugging-Informationen, dh der Wert der Variable x an diesem Punkt ist ... etc, und Trace für die Verfolgung von Ablauf der Kontrolle durch meine App (mehr Spam wie).

    
Tim Jarvis 31.12.2008 00:24
quelle
2

Trace-Aufrufe werden nur ausgeführt, wenn Sie sich im Freigabemodus befinden. Das Kompilieren im Freigabemodus hat einige Leistungsvorteile, die Sie möglicherweise in der Endanwendung haben möchten, und es kann andere Gründe geben, den Freigabemodus zu aktivieren. Es kann jedoch vorkommen, dass Sie Informationen zur Trace-Konsole aufzeichnen möchten, die mit Anwendungen wie SysInternals DbgView . Dies sind normalerweise Nachrichten, die Sie nicht unbedingt an eine Protokollausgabe senden möchten oder die Sie immer für Debugzwecke zur Verfügung haben möchten, selbst wenn der Benutzer die Protokollierung deaktiviert hat.

Sie möchten sicherlich nicht viele Informationen an die Trace-Konsole senden, da dies zu einer Leistungseinbuße führt, aber einige wichtige Informationen könnten angebracht sein.

    
Michael Bray 31.12.2008 00:27
quelle
2

Ich habe Trace (mit einem zugehörigen TraceSwitch) für Logging-Bemühungen in Release-Umgebungen verwendet - eine schnelle Optimierung der app.config kann dann verschiedene Protokollebenen ohne Neukompilierung geben (was ein Problem verursachen könnte) geh sowieso weg) oder die Notwendigkeit, einen Debugger anzuhängen. Besonders praktisch für Probleme, die nur auf Kundenrechnern auftreten, egal aus welchem ​​Grund. Ich habe dies verwendet, um die Abmeldung aus einer FTP-Klasse (im alten Framework 1.1) zu verhindern, um Probleme bei der Netzwerkübertragung zwischen zwei Unternehmen zu diagnostizieren >     

Rowland Shaw 31.12.2008 11:05
quelle

Tags und Links