Exception NUR im Release Modus



  • Hallo Zusammen,

    ich wurde hier ins kalte Wasser geschubst und musste eine bestehende MFC-Applikation erweitern 🙂

    Das ursprüngliche Programm hatte sowohl im Debug als auch im Release Modus einwandfrei gearbeitet. Ich habe das Programm kontinuierlich im Debug-Modus erweitert und alles läuft im Debug-Modus nachwievor einwandfrei.

    Im Release-Modus stürzt das Programm aber neuerdings bei bestimmten Aktionen mit der Meldung "An unhandled Win32 exception occured in ..." ab.

    Hat jmd. von euch vielleicht eine Idee woran das liegen könnte?

    Zusätzliche Informationen kann ich natürlich gerne zur Verfügung stellen, habe leider aber keine Ahnung, welche benötigt werden könnten.

    Viele Grüße
    Roman



  • Da steht mal was dazu:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-5196.html

    Ansonsten könntest du auch MessageBoxen einbauen und somit im Release gucken, wie weit das Programm kommt, bzw. wo es letztendlich abstürzt.

    Irgendwo kann man auch für Release "Debug-Informationen generieren", einstellen, aber da habe ich gerade nix genaueres zu im Kopf...

    ...ist ja praktisch schon Wochenende... 😃



  • Im Debug-Modus werden Zeiger und Strukturen anders initialisiert (mit einem Prüfcode), das fällt bei Release weg.

    Du mußt Dir also mal ansehen, wo Du überall Zeiger belegst.

    Weiterhin wird im Debug-Modus auf Speicherüberschreitungen geprüft.

    Das wird so gemacht: Du brauchst mit new 10 Bytes. Bei Debug holt der (ich weiß jetzt nicht genau, sinngemäß) jetzt 14 Bytes:
    Prüfcode
    Deine 10 Bytes
    Prüfcode
    Und gibt Dir nicht den Anfang zurück, sondern auf "Deinen" Block. Schreibst Du jetzt über den Speicher, kann er das feststellen. Bei Release werden aber wirklich nur die notwendigen Bytes belegt.

    Falls Du also über allokierten Speicher hinausliest, kann das im Debug-Modus straffrei bleiben, bei Release aber zu einem Absturz führen.

    Das sind so typische Quellen für dieses von Dir genannte Phänomen.



  • Ok Danke schonmal für eure Tips 🙂

    Werd mich damit dann erstmal durchkämpfen.


Anmelden zum Antworten