none
Release Version crasht RRS feed

  • 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

     

     

    Montag, 14. Februar 2011 07:40

Alle Antworten

  • Callstack!? MiniDump!?

    WO crasht es?


    Jochen Kalmbach (MVP VC++)
    Montag, 14. Februar 2011 07:55
  • 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

    Montag, 14. Februar 2011 09:50
  • 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++)
    Montag, 14. Februar 2011 10:07
  • Hallo Fire-Heart,

    meine Ideen dazu wären:

    1. evtl. hast du ja ein Problem mit dynamisch angelegten Dialogen oder MFC Objekten. Das hat mir auch schon sehr zu schaffen gemacht.
    2. ASSERTs welche Code ausführen
    3. 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

    Montag, 14. Februar 2011 10:21