[c++] Bug in Debug, nicht in Release

DataNaut

Cadet 2nd Year
Registriert
Nov. 2005
Beiträge
31
Hallo Fachleute,
Seltsame Dinge tun sich in visual studio 2003.
Am Ende einer langen Debugsession haben wir unseren Fehler eingekreist, und festgestellt, dass er nur in der Debug Konfiguration auftritt, nicht aber im Release.
Einige Symntome:
Ein int Array im Debugger untersucht, zeigt unterschiedliche Werte, als im Code (z.B. mit printf ausgegeben) verwendete.
Die Arrays werden im Release mode richtig verwendet, im Debug Mode ändern sich die Werte.
Wir haben schon ausgeschlossen, dass ein wildgewordener Pointer im Speicher der Klasse herumwütet.
Ich würde mich freuen, wenn nun jemand vor dem Rechner sitz, und ruft: Ach, dass ist das alte Problem #1324, da muss man ganz einfach...." Wenn dem so ist, haut rein in die Tasten.
Vielen Dank und Gruss
DataNaut
 
Naja, im Debug Build werden normalerweise keine oder weniger Compileroptimierungen verwendet, was im Release der Fall ist, also sollte das Problem in einem falschen Code, der nur in Verbindung mit Compileroptimierung (oberhalb -O2) auftritt liegen.
 
wie verändern sich denn die werte ? wie genau sieht das problem aus(code?)

edit: kann auch sein das der fehler in der release einfach "übersprungen" wird
 
Hast du vielleicht Code mit Nebeneffekten in ein assert gepackt?

Schau dir auch mal das hier an:
http://support.microsoft.com/?scid=kb;en-us;286470&x=13&y=17

Aktivier mal den Full Page Heap für das Programm, vielleicht wird irgendwo Speicher verwurstet.

Normalerweise treten solche Fehler eher im Release auf. Also entweder ist's Kontroll-Code oder asserts, die z.B. durch Defines im Release rausfliegen oder aber Compileroptimierungen. Wobei letztes gruselig ist und eher auf fragwürdigen Code schließen lässt :)


Viel mehr lässt sich so leider nicht sagen. Minimalbeispiel wäre extrem hilfreich, falls sich das Programm auf sowas reduzieren lässt.
 
Zuletzt bearbeitet:
Gefunden...
Eine (oder mehrere, wir suchen noch) nicht initialisiere Variable war schuld. Im Release wurde sie nett (vielleicht auch nur zufällig) auf Null gesetzt, im Debug Mode kam da irgendwas rein.
Eine Frage beleibt noch: Warum hat und der MS Debugger so schmählich im Stich gelassen: Die Werte, die er angezeigt hat, waren definitiv die falschen.
Trotzdem vielen Dank für eure Tipps.
Gruss
DataNaut
 
Probier mal die diversen Compilerschalter und Warnlevel 3, da sollte der Compiler uninitialisierte Variablen finde. Tut der 2003er bei mir zumindest.
 
Das ist kein Bug. Bei MS VS im Release Mode werden Variablen (normalerweise) mit 0 initialisiert, im Debug Modus jedoch nicht. Prinzipiell sollte man seine Variablen immer selbst initialisieren.
 
Zurück
Oben