Frage

Ich sollte das wahrscheinlich schon wissen, aber ich bin mir nicht sicher und sehe es nicht dokumentiert.

Ich verwende system.diagnostics Dies soll die Entwicklung und das Verständnis machen, was passiert, was passiert nur Während der Entwicklung. Normalerweise kommentiere ich entweder den Code oder lösche ihn, wenn ich zur Produktion gehe.

Ich frage mich, was passiert, wenn ich vergesse, den Code zu kommentieren. Sagen Sie beispielsweise, dass ich während des Entwicklungszyklus Fehlerinformationen verfolge, die einen Verbindungsstich mit der Debug.write -Linie zum Ausgangsfenster protokollieren können. Das ist offensichtlich in Ordnung, während ich mich entwickeln kann, aber ich frage mich, ob ich beim Live gehe, wenn ich hier ein Risiko gibt. Kann jemand einen Debugger an meine ausführbare Live -Datei anbringen und diese Ausgabe fangen? Oder ist es etwas, das in Visual Studio nur Ausgabe erzeugt?

Und was ist, wenn wir von Debug zu Veröffentlichung wechseln? Wird dieser Code vom Compiler ignoriert, wenn wir zur Veröffentlichung kompilieren?

War es hilfreich?

Lösung

Alle Mitglieder in der Debug -Klasse sind mit markiert ConditionalAttribute, Daher werden die Call -Sites nicht in einen Release -Build zusammengestellt.

Andere Tipps

System.Diagnostics.Debug Methodenaufrufe sind nur vorhanden, wenn das bedingte Kompilierungssymbol "Debug" definiert ist. Standardmäßig ist das "Debug" -Symbol nur für Debug -Builds definiert.

Compiler, die unterstützen ConditionalAttribute Ignorieren Sie Anrufe zu diesen Methoden, es sei denn, "Debug" wird als bedingte Kompilierungssymbol definiert.

Da die Debug -Methoden das [bedingte ("bedingte (" Debug "]] Attribut auf sich haben, müssen Sie sich, wenn Sie von Debug zu Freigabe wechseln einer Veröffentlichung).

Debugginformationen sind nur beim Laufen sichtbar Debug-Modus. Im Release -Modus Es werden keine Debug -Aussagen sichtbar sein (Sie können verwenden Verfolgen Anstatt von Debuggen Wenn Sie möchten, dass diese Aussagen im Freigabemodus sichtbar sind).

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

Sorgt Ihnen kompilieren ohne die /d:DEBUG Option oder #define DEBUG, Ihre Schreiblinienaufrufe sind in Ihrem Release -Code nicht physisch vorhanden. Es gibt keine Möglichkeit für Dritte, Informationen aus diesen Anrufen wiederherzustellen, da sie buchstäblich nicht in der Release -Version vorhanden sind.

Weitere Details hier: Debug -Klasse (System.Diagnostics) auf MSDN

Fast alle Mitglieder des Debugs sind mit ConditionalAttribute gekennzeichnet. Solche Compiler wie C# überspringen Anrufe während des Release -Builds auf diese Methoden, sodass Sie sich auf der sicheren Seite befinden.

Modusinformationen hier:http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top