Exception Handler löst nicht aus



  • Hi Leute,

    ich bin zur Zeit echt verzweifelt weil das Programm,
    an dem ich bereits mehrere Wochen programmiere manchmal abschmiert.
    Und zwar ohnen den Exception-Handler auszulösen.

    Ich setze den mit SetUnhandledExceptionFilter(&ExceptionFilter);
    und er löst auch aus wenn ich z.B. durch 0 dividiere, aber iergendwie
    scheint das Programm "leise" abzuschmieren => es geht einfach aus.

    Auch mit dem Debugger lässt sich nichts erkennen
    (Der Code verschwindet einfach).

    Hat einer von euch einen Tipp wie ich das in den Griff bekomme?

    Gruß
    Listing



  • Niemand?
    War alles umsonst? 😡



  • Schmiert dein Programm denn möglicherweise nochmal im Exception Handler ab? Dann macht es nämlich nur noch leise "puff" und das Programm beendet sich. Probier mal das: Setzte diese beiden Codestücke ganz am Anfang und am Ende deines Exception Handlers. Damit siehst wenn etwas darin schief läuft.

    // Defines im Header
    #define InstallThreadExceptionHandler(Handler) \
    		__asm push Handler \
    		__asm push FS:[0] \
    		__asm mov  FS:[0], ESP
    
    // restores the SEH frame
    #define UninstallThreadExceptionHandler() \
    		__asm mov  EAX, [ESP] \
    		__asm mov  FS:[0], EAX \
    		__asm add  ESP, 8
    
    EXCEPTION_DISPOSITION __cdecl SelfProtect (struct _EXCEPTION_RECORD* ExceptionRecord, void* /*EstablisherFrame*/, struct _CONTEXT* ContextRecord, void* /*DispatcherContext*/)
    {
        // Crash im Exception Handler
    }
    
    // Dein Handler
    LONG CALLBACK ProcessExceptionHandler (LPEXCEPTION_POINTERS ExceptionPointers) 
    {
        InstallThreadExceptionHandler (SelfProtect);
    
        // Do crazy stuff
    
        UninstallThreadExceptionHandler();
    }
    


  • Ok, Danke.

    Werds probieren 🙂



  • Jochen Kalmbach schrieb:

    Es sei, mal wieder, angemerkt, dass ab VS2005 einige "Exceptions" nicht mehr an das Programm weitergeleitet werden, sondern *hart* an das OS übergeben werden!!!

    Siehe:
    http://blog.kalmbachnet.de/?postid=75

    (Aus dem Thread: http://www.c-plusplus.net/forum/viewtopic-var-t-is-223116.html)


Anmelden zum Antworten