unterschied zwischen debug und nicht debug?
-
was ist eigentlich der unterschied in der resultierenden exe datei, wenn ich debug/release compile?
danke
-
Das, was in den beiden Projektkonfigurationen unterschiedlich eingestellt ist.
Im Normalfall:
Release:
-Programmcode wird optimiert, auf Wunsch auf die Eigenheiten eines bestimmten Prozessortyps bzw nach Größe/Geschwindigkeit.
-Präprozessorsymbol NDEBUG definiert
-Programm wird für die Releaseversion der Laufzeitbibliothek gelinktDiese ist normalerweise auf allen Rechnern vorhanden und somit das Programm ohne weitere Abhängigkeiten lauffähig.
-keine Debugsymbole werden erstellt.Debug:
-ohne Optimerungen
-Präprozessorsymbol _DEBUG definiertASSERT-Überprüfungen werden ausgeführt.
-Programm wird für die Debugversion der Laufzeitbibliothek gelinktDiese ist meist auf Nicht-Entwicklungsrechnern nicht vorhanden, somit lässt sich das Programm nicht überall ausführen
-Laufzeitüberprüfungen wie Aufspüren von Buffer-Overflows auf Stack und Heap, nicht initialisierten Variablen
-Debugsymbole mit vollständigem Quelltext werden erstellt
-
masterofx32 schrieb:
Das, was in den beiden Projektkonfigurationen unterschiedlich eingestellt ist.
Im Normalfall:
Release:
-Programmcode wird optimiert, auf Wunsch auf die Eigenheiten eines bestimmten Prozessortyps bzw nach Größe/Geschwindigkeit.
-Präprozessorsymbol NDEBUG definiert
-Programm wird für die Releaseversion der Laufzeitbibliothek gelinktDiese ist normalerweise auf allen Rechnern vorhanden und somit das Programm ohne weitere Abhängigkeiten lauffähig.
-keine Debugsymbole werden erstellt.Debug:
-ohne Optimerungen
-Präprozessorsymbol _DEBUG definiertASSERT-Überprüfungen werden ausgeführt.
-Programm wird für die Debugversion der Laufzeitbibliothek gelinktDiese ist meist auf Nicht-Entwicklungsrechnern nicht vorhanden, somit lässt sich das Programm nicht überall ausführen
-Laufzeitüberprüfungen wie Aufspüren von Buffer-Overflows auf Stack und Heap, nicht initialisierten Variablen
-Debugsymbole mit vollständigem Quelltext werden erstelltmist...
ich hab nähmlich n komisches problem...ich hab n spiel mit sdl geschrieben, und teile davon funktionieren nur wenn ichs als debug compile oO keine ahnung warum!
naja dann muss ich wohl n bissl weiter rumbasteln dadran
-
Mach den Fehler raus.
Bye, TGGC
-
pixartist schrieb:
mist...
ich hab nähmlich n komisches problem...ich hab n spiel mit sdl geschrieben, und teile davon funktionieren nur wenn ichs als debug compile oO keine ahnung warum!
naja dann muss ich wohl n bissl weiter rumbasteln dadranDann musst du mal schauen, was in den Projektkonfigurationen anders ist und den Fehler verursachen könnte.
Es könnte auch ein Buffer Overflow sein, der sich nur im Release-Build bemerkbar macht, weil im Debugmodus die allokierten Variablen größzügig mit Pufferspeicher eingekleidet werden, damit bei kleineren Overflows keine anderen Dinge überschrieben werden.
Es könnte aber auch wichtiger Programmcode sein, den du in eine ASSERT-Anweisung gesteckt hast. Bei Releasebuilds wird der Ausdruck innerhalb der ASSERTs nicht ausgewertet und die Anweisung verschwindet komplett.
Zur Not kannst du auch einstellen, dass für deine Releasekonfiguration Debuginformationen generiert werden und dann kannst du dem genauer auf den Grund gehen.
-
masterofx32 schrieb:
pixartist schrieb:
mist...
ich hab nähmlich n komisches problem...ich hab n spiel mit sdl geschrieben, und teile davon funktionieren nur wenn ichs als debug compile oO keine ahnung warum!
naja dann muss ich wohl n bissl weiter rumbasteln dadranDann musst du mal schauen, was in den Projektkonfigurationen anders ist und den Fehler verursachen könnte.
Es könnte auch ein Buffer Overflow sein, der sich nur im Release-Build bemerkbar macht, weil im Debugmodus die allokierten Variablen größzügig mit Pufferspeicher eingekleidet werden, damit bei kleineren Overflows keine anderen Dinge überschrieben werden.
Es könnte aber auch wichtiger Programmcode sein, den du in eine ASSERT-Anweisung gesteckt hast. Bei Releasebuilds wird der Ausdruck innerhalb der ASSERTs nicht ausgewertet und die Anweisung verschwindet komplett.
Zur Not kannst du auch einstellen, dass für deine Releasekonfiguration Debuginformationen generiert werden und dann kannst du dem genauer auf den Grund gehen.nope, keine asserts drin und kein buffer overflow...das programm stürtzt ja nicht ab, sondern ein paar funktionen machen nicht das was sie sollen oO
n bissl schwer den fehler zu finden, denn im debug modus gehts ja
edit: oh ja das werd ich dann wohl machen müssen