Frage

Ich habe einen Code in Visual Studio 2008 in C ++, die mit Dateien funktionieren nur durch fopen und fclose. Alles funktioniert perfekt in Debug-Modus. und ich habe mit mehreren Datensätzen getestet. Aber es funktioniert nicht im Release-Modus. Er stürzt die ganze Zeit. Ich habe aus allen Optimierungen eingeschaltet, auch gibt es keine Abhängigkeit zu irgendetwas ist (im Linker), und ich habe auch festgelegt diese:

Optimierung: Deaktiviert (/ Od) Halten Sie nicht referenzierte Daten. Entfernen Sie nicht Redundant Optimieren für Windows98: NEIN

Ich halte immer noch fragen, wie es unter diesen Umständen nicht funktionieren soll. Was soll ich sonst noch ausschalten lassen, wie im Debug-Modus arbeiten?

Ich denke, wenn es im Release-Modus funktioniert, aber nicht im Debug-Modus, könnte es eine Codierung Fehler sein, aber die andere Art und Weise sieht seltsam. nicht wahr?

Ich schätze jede Hilfe. --Nima

War es hilfreich?

Lösung

Debug-Modus initialisieren oft Heap Datenzuordnungen. Das Programm kann auf diesem Verhalten abhängig sein. Geben Sie für Variablen und Puffer, die nicht immer initialisiert werden.

Andere Tipps

1) Überprüfen Sie jegliche und alle Code, der auf Präprozessormakros abhängt.
2) Verwenden Sie assert () für Programmzustand Voraussetzungen überprüfen. Diese dürfen nicht zu Auswirkungen Programmablauf zu erwarten (dh. Entfernen des Scheck würde immer noch der Code erlaubt das gleiche Endergebnis zu liefern), weil assert ein Makro. Verwenden Sie reguläre Laufzeit conditionals wenn eine Assertion nicht tun wird.
3) In der Tat nie eine Variable in einem nicht initialisierten Zustand verlassen.

Bei weitem die wahrscheinlichste Erklärung ist, unterschiedliche undefinierten Verhalten in den beiden von nicht initialisierten Speicher verursacht Modi. Der Mangel an Thread-Sicherheit und Probleme mit Synchronisationscode können auch diese Art von Verhalten zeigen aufgrund unterschiedlicher Zeitumgebungen zwischen Debug- und Release, aber wenn Ihr Programm dann nicht multi-threaded ist offensichtlich das es nicht sein kann.

hatte ich diese Erfahrung gemacht und in meinem Fall war es wegen einem meiner Reihe von Struktur, welche nur X-Index haben, nehme an, aber mein Looping, die diese Struktur überprüfen war auf X + 1 Index Kontrolle über. Interessant ist Debugging-Modus ausgeführt wurde fein obwohl ich auf Visual C ++ 2005 war.

verbrachte ich ein paar Stunden durch in printf in meine Codierung Zeile für Zeile setzen, den Fehler zu fangen. Jeder hat eine gute Möglichkeit, diese Art von Fehlern zu debuggen lassen Sie es mich wissen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top