Exe startet nicht!!!Access violation!



  • Hallo!

    Ich habe eine schickes (und ziemlich umfangreiches Programm) geschrieben, welches Daten einliest, dann die Daten in etwas veränderter Form in eine andere Datei speichert und ein Programm (GAMS-algebraisches Optimierungstool) aufruft, welches dann diese Daten benutzen soll. Bisher funktionierte alles, aber seit kurzem (seit ich geringe Änderungen an meinem Programm vorgenommen hab) passiert bei einem Doppelklick auf die MFC-exe Datei gar nichts mehr. Mit dem Debuggen bin ich nicht so bewandert, aber wenn ich (ganz unbeholfen) auf den "Debug" Knopf drücke, bringt er mir folgende Fehlermeldung:

    _____________________________________________________________________________ 
    Diese Anwendung wird aufgrund eines ungültigen Vorgangs geschlossen. 
    Wenden Sie sich an den Hersteller, falls das Problem weiterhin besteht. 
    
    Details: 
    
    RUNGAMS verursachte einen Fehler durch eine ungültige Seite 
    in Modul KERNEL32.DLL bei 0167:bff7672c. 
    Register: 
    EAX=00000000 CS=0167 EIP=bff7672c EFLGS=00010246 
    EBX=00000000 SS=016f ESP=00580000 EBP=005800d8 
    ECX=005800f0 DS=016f ESI=81651bf0 FS=386f 
    EDX=0058043c ES=016f EDI=00580008 GS=0000 
    Bytes bei CS:EIP: 
    55 57 e8 74 ff ff ff83 c4 0c 8f 87 9c 00 00 00 
    Stapelwerte: 
    00000004 00580174 00000000 00000000 00000000 00000000 00000000 00000000 
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
    
    Unbehandelte Ausnahme in rungams.exe: 0xC0000005: Access Violation. 
    __________________________________________________________________________
    

    Ich hab keine Ahnung, wie ich den Fehler finden soll.. kann mir jemand eine kurze Einführung im Debuggen geben???
    Der Witz ist, das das Programm auf einem anderen Rechner funktioniert hat...leider nicht auf meinem!!!!

    Vielen Dank für Eure Hilfe!


  • Mod

    Schalte Deinen Compiler auf Debug-Build. Erzeuge das Programm und starte es mit F5. In den meisten Fällen bekommst Du den selben Fehler und der Debugger zeigt Dir die Stelle an der es kracht. Evtl. musst Du Dir den Callstack anzeigen lassen um auf einen Fehler in tieferen Scichten zu stossen.

    Du kannst auch für den Release Build Debug Infos mit erzeugen lassen, dann kannst Du auch den Debugger mit dem Release Mode Build starte, falls der Fehler etwas versteckter ist und evtl. nur im Release Mode auftritt.



  • Danke, ich werd das zu Hause gleich ausprobieren. Mal sehen, ob ich es rausfinde! Vielen Dank!





  • Korrektur:
    f5 geht nur zum Haltepunkt f10 geht Schrittweise
    wenn du kein Haltpunkt eingelegt hast, läuft das Tool bis Ende ohne was zu merken.


  • Mod

    Und wieso nicht F5. Er hat doch keinen Haltepunkt und wir wollen doch feststellen wo es kracht. Also F5 und mal sehen was passiert!



  • Hallo,
    F5 geht nur zum Haltepunkt !!!!!!!!!!!!!



  • Dokdok, wenn man keinen Haltepunkt hat, hält es auch nicht an. 😉
    Es läuft dann so lange, bis es abstürzt - man ist aber schon im Debugmodus.



  • Hallo, danke für Eure Mühe!! Das Program funktioniert jetzt! Ich hab einfach etwas an den Einstellungen vom Visual Studio geändert und jetzt geht es. Es werden zwar ein Haufen Warnungen angezeigt, aber die ignoriere ich eiskalt. Frü das Debuggen stelle ich mich wahrscheinlich zu blöd an... wenn ich einen Haltepunkt gesetzt hab, sagt mir der "böse" Debugger, daß der Haltepunkt ignoriert wird... woran liegt das?

    Und noch eine Frage zu den Warnungen: es sind alles Warnungen in C++ Dateien...wie finde ich heraus, in welcher von meinen Datein sich die zwielichtigen Aktionen abspielen???

    Vielen Dank für Eure Hilfe... wenn es dieses Forum nicht gäbe, wären einige von uns ganz schön aufgeschmissen (ich inklusive!!) 🙂



  • Emma schrieb:

    Es werden zwar ein Haufen Warnungen angezeigt, aber die ignoriere ich eiskalt.

    Mach das mal besser nicht - so eine Warnung deutet häufig auf einen möglichen Fehler hin.

    Um die zu finden und zu eliminieren, solltest du als erstes den Punkt ansteuern, der die Warnung ausspuckt (Doppelklick auf die Compiler-Ausgabe) und dir dann eventuell überlegen, wo du die betroffene Funktion verwendest. Eine zusätzliche Hilfe dürften die Erklärungen zu deiner Warnung in der MSDN sein.


Anmelden zum Antworten