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, 8EXCEPTION_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!!!
(Aus dem Thread: http://www.c-plusplus.net/forum/viewtopic-var-t-is-223116.html)