Antwort

69

Nun, es hängt davon ab, welche Sprache Sie verwenden, aber im Allgemeinen sind es 2 separate Konfigurationen, jede mit eigenen Einstellungen. Standardmäßig enthält Debug Debug-Informationen in den kompilierten Dateien (ermöglicht einfaches Debugging), während Release in der Regel Optimierungen aktiviert hat.

Soweit bedingte Kompilierung geht, definieren sie jeweils verschiedene Symbole, die in Ihrem Programm überprüft werden können, aber sie sind sprachspezifische Makros.

16

Der Hauptunterschied ist, wenn im Debug-Modus kompiliert wird, werden auch pdb-Dateien erstellt, die das Debuggen erlauben (so können Sie den Code durchlaufen, wenn er ausgeführt wird). Dies bedeutet jedoch, dass der Code nicht so optimiert ist.

+9

Sie können auch im Freigabemodus durch den Code gehen. –

+0

PDB-Dateien werden auch im Freigabemodus generiert –

+0

-1: Das ist falsch: pdb-Dateien sollten auch für Release-Build generiert werden, da es sehr nützlich ist, eine Remote-Absturz-Anwendung zu debuggen und nicht wirklich hohe Leistungskosten hinzuzufügen. In der Tat ist es der Standard in VS – ceztko

92

Debug und Veröffentlichung sind Etiketten nur für verschiedene Lösungskonfigurationen. Sie können andere hinzufügen, wenn Sie möchten. Ein Projekt, an dem ich einmal gearbeitet habe, hatte einen Namen namens "Debug Internal", mit dem die internen Bearbeitungsfunktionen der Anwendung aktiviert wurden. Sie können dies sehen, wenn Sie zu Configuration Manager... gehen (es ist auf dem Build Menü). Weitere Informationen zu MSDN Library finden Sie unter Configuration Manager Dialog Box.

Jede Lösung Konfiguration besteht dann aus einer Reihe von Projektkonfigurationen. Auch dies sind nur Labels, diesmal für eine Sammlung von Einstellungen für Ihr Projekt. Zum Beispiel haben unsere C++ - Bibliotheksprojekte Projektkonfigurationen, die "Debug", "Debug_Unicode", "Debug_MT" usw. genannt werden.

Die verfügbaren Einstellungen hängen davon ab, welche Art von Projekt Sie erstellen. Für ein .NET-Projekt ist es ein ziemlich kleiner Satz: #define s und ein paar andere Dinge. Für ein C++ - Projekt erhalten Sie eine viel größere Auswahl an Dingen, die Sie optimieren können.

Im Allgemeinen verwenden Sie jedoch "Debug", wenn Sie möchten, dass Ihr Projekt mit ausgeschaltetem Optimierer erstellt wird und wenn vollständige Debugging-/Symbolinformationen in Ihrem Build enthalten sein sollen (in der .PDB-Datei). gewöhnlich). Sie verwenden "Release", wenn Sie möchten, dass der Optimierer eingeschaltet ist, und wenn Sie nicht möchten vollständige Debugging-Informationen enthalten.

+0

Die ** Projektkonfigurationen ** können bearbeitet werden, indem Sie mit der rechten Maustaste auf ein Projekt im SolutionExplorer klicken und Eigenschaften aus dem Kontextmenü wählen. Um die Debugging-Einstellungen für die Projektkonfiguration "Release" zu bearbeiten, wählen Sie auf der linken Seite das Register "Debug" und wählen Sie "Release" mit dem Kombinationsfeld "Configuration". => Die Verwendung des Labels "Debug" für eine Lösungskonfiguration oder Projektkonfiguration kann irreführend sein, da die "Release" -Konfiguration ebenfalls debuggt werden kann. – Stefan

+0

Siehe auch folgende Frage zum Aktivieren/Deaktivieren der Kompilierungsoptimierung. https://stackoverflow.com/questions/1199204/how-can-i-disable-compiler-optimization-in-c (In VB.NET kann es auf der Registerkarte Kompilieren gefunden werden => Erweiterte Kompilierungsoptionen ...) – Stefan

+0

Wenn Sie die Erstellung von Debugging-Informationen für den Freigabemodus deaktivieren möchten, können Sie dies tun, indem Sie die Option "Debug-Informationen generieren" auf Keine setzen. Trotzdem wird der Debugger beim Starten der Anwendung angehängt. Um das zu vermeiden, müssen Sie "Start ohne Debugging" (Strg + F5) verwenden. – Stefan