Fragensteller
Release Version crasht

Allgemeine Diskussion
-
Hallo Forum
Ich habe ein sehr seltsames Problem.
Bei einer simplen MFC Dialog-Based Anwendung habe ich eine Klasse in die Applikation gehängt, die eine verkettete Liste mit Daten aufbaut, einen Datenpuffer dynamisch anlegt und die einzelnen Listenelemente (welche natürlich auch dynamisch (new/delete) angelegt werden) besitzen auch Pointer auf den Datenpuffer.
Wenn ich den Anzeigedialog mit einbinde, komme ich bald zu der Situation, dass die Release-Version crasht. Die Debug-Version funktioniert einwandfrei und die Strukturen sind eigentlich so einfach, dass man kaum irgendwo zum Fehler-Suchen beginnen kann. Wenn ich nicht jahrzehntelang MFC Programme geschrieben hätte und auch verkettete Listen tausendfach ausprogrammiert hätte, würde ich anhand des Verhaltens der Abstürze beim Fehlersuchen meinen, ich hätte halt keine Ahnung vom Programmieren.
Pfuscht mir das MFC Getriebe da irgendwie in's Handwerk? Darf ich gewisse Dinge in der App nicht machen?
Grüße
FireHeart
- Typ geändert Robert BreitenhoferModerator Dienstag, 19. April 2011 14:09 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hallo Jochen
Somit kommen wir in's Eingemachte. Ich konnte bislang viele Fehler in der Debug-Version finden. Das geht hier, nicht, weil die Debug-Version ohne Auffaelligkeiten prima laueft. Die Release-Version liefert - zum Glueck reproduzierbar - einen Crash - sprich, das Betriebssystem kommt mit der klassischen Meldung, dass das Programm ein Problem verursacht hat. Mehr hab ich nicht.
Ich hab das Projekt voellig neu begonnen (weil ich noch nicht allzuweit fortgeschritten war), mit gleichem Erfolg. Die ueblichen Methoden, das PRoblem einzugrenzen (Codeteile weglassen, Dateiausgaben dazubasteln) greifen alle nicht. Das Programm laueft anhand dieser Massnahmen oder wieder auch nicht, aber man findet keinen Uebeltaeter. Auch diese Fehler kenne ich, das sind normalerweise dann Speicher, die man sich irgendwann ueberschreibt, oder aehnliches. Bloss, dass die Struktur hier noch so einfach ist, dass dieses PRoblem ausgeschlossen werden kann....es sei denn, das Betriebssystem bzw. das MFC Geruest hat noch ein paar Tricks, die hineinpfuschen.
Wie komme ich in einer Release-Version noch zu auswertbaren Informationen?
Gruesse
FireHeart
-
Hallo Fire-Heart!
Die Release-Version liefert - zum Glueck reproduzierbar - einen Crash - sprich, das Betriebssystem kommt mit der klassischen Meldung, dass das Programm ein Problem verursacht hat. Mehr hab ich nicht.
Ja dann versttehe ich Dein Problem ja gar nicht...
Man kann nicht nur eine Debug-Version debuggen, sondern auch eine Release-Version!Wie komme ich in einer Release-Version noch zu auswertbaren Informationen?
Einfach in VS oben auf "Release" umstellen und F5 drücken!?
Jochen Kalmbach (MVP VC++) -
Hallo Fire-Heart,
meine Ideen dazu wären:
- evtl. hast du ja ein Problem mit dynamisch angelegten Dialogen oder MFC Objekten. Das hat mir auch schon sehr zu schaffen gemacht.
- ASSERTs welche Code ausführen
- Nicht initialisierte Variable. Diese werden afaik im Debugbuild immer mit 0 oder 0xcdcdcdcd initialisiert.
Siehe auch die Links bei CodeGuru
http://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c9535 // Debug Heap management
http://www.codeguru.com/forum/showthread.php?t=269905 // Allgemeines zu Crashes in Release/Debug Builds
Gruß
Georg