WARNUNG Die
MSDN- Dokumentation für / debug switch (in Visual Studio ist Debug Info) scheint veraltet zu sein! Dies ist, was es hat, was falsch ist
Wenn Sie / debug: full verwenden , beachten Sie, dass sich dies auf die Geschwindigkeit und Größe des JIT-optimierten Codes sowie auf die Codequalität mit / debug: full auswirkt . Wir empfehlen / debuggen: pdbonly oder kein PDB zum Generieren von Release-Code.
Ein Unterschied zwischen / debug: pdbonly und / debug: full besteht darin, dass der Compiler mit / debug: full ein a ausgibt , mit DebuggableAttribute
dem dem JIT-Compiler mitgeteilt wird, dass Debug-Informationen verfügbar sind.
Was ist dann jetzt wahr?
- Nur Pdb - Vor .NET 2.0 war es hilfreich, die Absturzabbilder von freigegebenen Produkten ( Kundencomputern) zu untersuchen. Der Debugger konnte jedoch nicht angehängt werden. Dies ist in .NET 2.0 nicht der Fall. Es ist genau das gleiche wie Full .
- Vollständig - Dies hilft uns bei der Untersuchung von Absturzabbildern und ermöglicht es uns, den Debugger an den Release-Build anzuhängen. Im Gegensatz zu MSDN-Erwähnungen wirkt sich dies jedoch nicht auf die Leistung aus (seit .NET 2.0). Es funktioniert genauso wie Pdb-only .
Wenn sie genau gleich sind, warum haben wir diese Optionen? John Robbins (Windows Debugging God) fand heraus, dass diese aus historischen Gründen vorhanden sind.
Zurück in .NET 1.0 gab es Unterschiede, in .NET 2.0 jedoch nicht. Es sieht so aus, als würde .NET 4.0 dem gleichen Muster folgen. Nach einer Überprüfung mit dem CLR-Debugging-Team gibt es überhaupt keinen Unterschied.
Was steuert, ob der JITter einen Debug-Build ausführt, ist der Schalter / optimize. <…>
Unter dem Strich möchten Sie Ihre Release-Builds mit / optimize + und einem der Schalter / debug erstellen, damit Sie mit dem Quellcode debuggen können.
dann beweist er es weiter.
Jetzt ist die Optimierung Teil eines separaten Schalters /optimize
(im Visual Studio heißt sie Optimize code
).
Kurz gesagt, unabhängig davon, ob DebugInfo pdb-only oder full einstellt, werden wir die gleichen Ergebnisse erzielen. Es wird empfohlen, None zu vermeiden, da Sie dadurch nicht in der Lage sind, die Crash-Dumps des freigegebenen Produkts zu analysieren oder den Debugger anzuhängen.