[gelöst]Problem mit Release Version



  • Hi,

    ich benutze Visual Studio 2005 und habe damit folgendes Problem:

    Im Debug-Modus läuft alles einwandfrei, im Release-Modus stürzt mir das
    Program ab.

    Fehlermeldung: Unbehandelte Ausnahme bei 0x00404a2a in....blablabla

    Hat jemand zufällig schon Erfahrung mit diesem Problem?

    Edit: ich weiß, dass die beschreibung etwas vage ist, aber ich fürchte ich kann hier nicht den gesamten quellcode posten, da ich nicht wirklich weiß wo das proggy abschmiert...



  • snuuts schrieb:

    Edit: ich weiß, dass die beschreibung etwas vage ist, aber ich fürchte ich kann hier nicht den gesamten quellcode posten, da ich nicht wirklich weiß wo das proggy abschmiert...

    Dann kreis den Fehler ein, indem Du Debug-Meldungen in eine Log-Datei schreibst.



  • Breakpoints kann man in VS 2005 in der Regel auch im Release-Modus setzen und dann den Debugger starten.
    Geht das an einigen Stellen nicht, kannst du mit _asm int 3 Brekpoints einfügen und den Fehler weiter einkreisen.



  • Normalerweise passiert das wenn Du Deine Variablen nicht initialisiert hast. Im debug-Mode werden alle Variablen initialisiert. Im Release-Mode passiert das aber nicht automatisch.

    Beispiel:

    int* pointer;

    delete pointer.

    Im debug-mode läuft dieser Code, Im Release-Mode stürzt er garantiert ab. Das muß halt heissen:

    int* pointer = 0;

    daher _grundsätzlich_ Vaiablen und vor allem pointer initialisieren...



  • danke für die antworten. habe den fehler mittlerweile gefunden. war ein indexfehler nach dem schema

    if(index[i-1]==0)...
    

    index[i-1] lieferte im debugmodus für i=0 den wert null (warum auch immer, das verstehe wer will). im release modus ist er dann aber abgesoffen.



  • Ganz einfach: index[-1] gehört laut Standard nicht zu deinem Array - im Debug-Modus hat der Compiler möglicherweise Reservespeicher vor und hinter dem Array angelegt, um solche Bereichs-Überschreitungen zu schlucken, im Release-Modus bekommst du nur den tatsächlich angeforderten Speicher und landest dadurch in RAM-Bereichen, die dir nicht gehören.


Anmelden zum Antworten