Absturtz bei Win32 Release



  • Hi!

    Ich habe das Problem, das mein Programm im Debug-Modus ohne Fehler läuft
    aber wenn ich es als Release erstelle stüzt es ab.

    Es kommt der Fehler:
    Die Anweisung in "0x73d311x7" verweiß auf den Speicher in "0x00000139".
    Der Vorgang "read" konnte auf dem Speicher nicht ausgeführt werden.
    Der fehler passiert in der MFC42.DLL
    Aufrufliste: MFC42! 73d311c7()

    Habe rausgefunden dass es wohl an
    pWnd->PostMessage(WM_CHECKTERMINE, 0, 0);
    liegt. Das wird in einem Thread gemacht.
    Wenn ich es auskommentiere gehts auch als Release.
    Die Funktion die durch die Nachricht auifgerufen wird, wird im Release gar nicht erreicht. Es stürzt vorher ab.

    Aber wieso läuft es unter Debug?
    Und was kann daran falsch sein?

    Woran kann das liegen?

    Gruß
    Filou



  • ehm, zuerst solltest duz folgendes probieren:

    für die Release-Konfig: Projekt->Eigenschaften für....->C/C++->Präprozessor->PP-Definitionen auf WIN32;_WINDOWS;_DEBUG setzten.
    probiers danach noch mal. Wenns jetzt geht, ist ein Wunder geschehen 😃 wenn nicht kannst du ausschließen, dass die Debug-Funktionen in der Debug-Version den Absturz abfangen.

    falls es immer noch nicht geht setzt du den Eintrag oben wieder auf WIN32;_WINDOWS;NDEBUG und vergleichst jetzt die restlichen Einträge auf Unterschiede zwischen Debug und Release, bis du den FEhler gefunden hast, der verantwortlich ist. Erfahrungsgemäß ist die größte Wahrscheinlich keit für so nen Fehler bei C++ -> Codeerstellung -> Vollständige Laufzeitüberprüfung. setz das mal auf 'beides'.

    hoffe ich hab dir wenigstens ein wenig geholfen



  • Warum debuggst Du nicht einfach?



  • Genau, Du kannst auch in der Release-Version debuggen. Must es aber temporär aktivieren.
    Bei VS 6.0 wars unter Settings, z.B:
    -> C++ -> General -> Debug Info: Program Database
    -> Link -> Debug -> Debug Info: Microsoft Format



  • Vienen Dank für Eure Antworten!!
    Ich werde es morgen testen. 🙂



  • Cosmixx schrieb:

    Genau, Du kannst auch in der Release-Version debuggen. Must es aber temporär aktivieren.

    Ab VS2002 ist es per default aktiviert.



  • Cosmixx schrieb:

    Genau, Du kannst auch in der Release-Version debuggen. Must es aber temporär aktivieren.
    Bei VS 6.0 wars unter Settings, z.B:
    -> C++ -> General -> Debug Info: Program Database
    -> Link -> Debug -> Debug Info: Microsoft Format

    Ich habe die Einstellungen geändert und jetzt läuft es auch als Release ohne Probleme. Sehr seltsam, oder?? 😮 😕



  • PS: Auf einem anderen PC läuft es jetzt nicht mehr. Da kommt die Meldung, die Datei MFC42D.DLL fehlt.

    HILFE!!!! 😞 😞 😞



  • Filou204 schrieb:

    Ich habe die Einstellungen geändert und jetzt läuft es auch als Release ohne Probleme. Sehr seltsam, oder?? 😮 😕

    Filou204 schrieb:

    PS: Auf einem anderen PC läuft es jetzt nicht mehr. Da kommt die Meldung, die Datei MFC42D.DLL fehlt.

    Das ist die Debugversion der MFC.

    Offenbar hast du noch etwas anders umgestellt, das du nicht umstellen solltest. Damit ist es auch nicht weiter "seltsam", dass es jetzt läuft.



  • MFK schrieb:

    Das ist die Debugversion der MFC.

    Offenbar hast du noch etwas anders umgestellt, das du nicht umstellen solltest. Damit ist es auch nicht weiter "seltsam", dass es jetzt läuft.

    Eine Frage:
    Nachdem er Debuggen in der Releaseversion aktiviert hat, werden ja auch logischerweise wieder die Debuginformationen
    in die exe geschrieben. Da ist es doch ganz sinnvoll, dass Visual Studio wieder automatisch die MFC-Debug-Dll nimmt,
    oder sollte er das nicht? Kommt das Programm überhaupt damit klar, wenn in der .exe Debuginformationen enthalten sind,
    und in der Dll nicht? Aus meiner Erfahrung geht es nicht, da z.B. Speicher in der Debug-Version ganz anders allokiert wird.

    Filou204 schrieb:

    Ich habe die Einstellungen geändert und jetzt läuft es auch als Release ohne Probleme. Sehr seltsam, oder??

    Wenn Du Pech hast, liegt Dein Bug an einem falschen Speicherzugriff, der nur ohne Debuginformationen auftritt.
    Dann bringt Dir auch das Debuggen in der Release-Version nichts.



  • MFK schrieb:

    Filou204 schrieb:

    Ich habe die Einstellungen geändert und jetzt läuft es auch als Release ohne Probleme. Sehr seltsam, oder?? 😮 😕

    Filou204 schrieb:

    PS: Auf einem anderen PC läuft es jetzt nicht mehr. Da kommt die Meldung, die Datei MFC42D.DLL fehlt.

    Das ist die Debugversion der MFC.

    Offenbar hast du noch etwas anders umgestellt, das du nicht umstellen solltest. Damit ist es auch nicht weiter "seltsam", dass es jetzt läuft.

    Ich habe alles so gemacht wie oben beschrieben. 😞

    Kann das an mein Thread liegen??



  • PS:

    DANKESCHÖN!

    Ich habe das Problem gelößt! Es lag an einem Zähler der aus irgendeinem Grund nicht auf 0 gesetzt werden konnte. Wieso weiß ich noch nicht.
    Habs erstmal rausgemacht und es läuft jetzt.

    Danke für den Tip mit dem Debuggen unter Release!!



  • Filou204 schrieb:

    Habs erstmal rausgemacht und es läuft jetzt.

    Das bedeutet übrigens nicht, dass es daran lag 😉


Anmelden zum Antworten