Frage zu Debug-/Release-Modus



  • Hallo,

    CB XE:

    In einem kleinen Projekt habe ich die exe einmal im Debug-Modus und einmal im Release-Modus erzeugt.
    Einstellungen Debug:
    - mit Debug Informationen bzw. vollständige Debug Informationen
    - Optimierung nicht aktiviert
    - kein dyn. Linken
    - keine Laufzeitpackages

    Einstellungen Release:
    - ohne Debug Informationen bzw. vollständige Debug Informationen
    - Optimierung aktiviert
    - kein dyn. Linken
    - keine Laufzeitpackages

    Die "Debug"-exe ist 1.778 MB und die "Release"-exe ist 1.775MB groß.

    Zur Frage:
    1. Ich habe eigentlich eine geringere Dateigröße bei Release erwartet, als nur 3KB Einsparung. Oder sind die Debug-Infos garnicht in der exe enthalten?
    Es wird auch in jedem Falle eine .tds-Dateu erzeugt.

    2. Sollte man vor Weitergabe eines Programmes die Anwendung als Release erzeugen oder ist es eigentlich egal? Bzgl. der Optimierung, merkt man diese wirklich in der Praxis?

    Schonmal Danke.



  • 1. Heilige Scheiße! Fast 2 GB große EXE. Ich glaube du solltest die Resourcen auslagern. Es sei denn, es ist ein Installer oder ein selbstentpackendes Archiv.

    Einsparungen von 3KB kann durchaus sein. Die Release kann für mehr Geschwindigkeit auch mal größer sein. Da wird zum Beispiel eine große kritische konstante Schleife ausgerollt. Sprünge verursachen zwar weniger Code, aber "dauern" dennoch. Ausgerollt geht das viel schneller, aber dafür ist der Code größer. Die Menge machts, interessant bei Shadern.

    Die Debug-Informationen werden in separaten ".pdb" Dateien gespeichert (bei VC++). Also extern.

    2. Release heißt ja Freigabe, Herausgabe, also ja: Release herausgeben. Die Debug würde ich nicht herausgeben. Falls jemand Interesse hat, dein Programm zu debuggen, dann gibst du ihm den Sourcecode.
    Pauschal kann man nicht sagen, dass man einen Unterschied zwischen Debug und Release spürt. Eigentlich schon.
    Deutlich ist er zum Beispiel in der CEGUI zu spüren. Da bekomme ich den Debug nie über 400 FPS. Im Release ist da fast keine Grenze.



  • Hallo,

    OH... ich meine natürlich KB, also die exe ist 1.775 KB groß!

    Ok, ich denke damit ist meine 1. Frage beantwortet.

    Aber zur 2. habe ich noch eine Frage:
    Wenn die Debug-Infos in einer externen Datei (bei C Builder .tds) gespeichert werden, dann kann doch auch keiner mein Programm debuggen, selbst mit der Debug-exe nicht? Oder habe ich da was falsch verstanden?



  • gert_mue schrieb:

    Wenn die Debug-Infos in einer externen Datei (bei C Builder .tds) gespeichert werden, dann kann doch auch keiner mein Programm debuggen, selbst mit der Debug-exe nicht?

    Jedenfalls nicht mit Symboltabelle; die ist in der .tds-Datei. Reverse Engineering wirst du auch bei einem Release-Build nicht komplett verhindern können, aber den Komfort, den du beim Debuggen hast, hat man dabei natürlich nicht 😉



  • OK, vielen Dank. Da weis ich nun bescheid.


Anmelden zum Antworten