Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Versuche Auslöser einer Exception zu finden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.01.2008, 16:23 Uhr
FunnyDingo



Hallo zusammen,

ich versuche seit einiger Zeit den Auslöser einer Exception zu finden. Eigentlich ist das kein Problem, da diese Exception zum Programmabruch führt und noch eine Meldung mit ausgibt, wo der Fehler aufgetreten ist, aber leider bekomme ich nur das hier:

terminate called after throwing an instance of 'tFatalException'

Das hilft mir nicht viel. Ich habe auch keine Idee was das sein soll. Mit GDB kenne ich mich auch nicht so gut aus und der Debugger war mir daher nicht sehr hilfreich. Vielleicht hat ja jemand von euch eine Idee, wie ich der Sache auf die Spur kommen kann.

Gruß,
Funny
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.01.2008, 16:56 Uhr
BoBtheREapER
kein job für nen BoB


weiß du denn wenigstens an was für einer codestelle das passiert? weil so weit ich weiß heißt tFatalException nur, dass eine exception aufgetreten ist und das proggie nicht weiter ausgeführt werden kann.
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.01.2008, 17:59 Uhr
FunnyDingo



tFatalException ist eine Exception von mir, die ich quasi an allen stellen verwende an denen zum Programmabbruch geführt werden soll. Das ganze tritt nach einem SIGINT auf. Den SIGINT verarbeite ich selbst. Ab dem SIGINT werden nur noch Resourcen freigegeben und Threads beendet. Aber in keiner der verarbeiteten Funktionen finde ich den throw.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.01.2008, 18:07 Uhr
FunnyDingo



Hm, ich habe den Fehler gefunden. Ich habe (zum Glück?) ein define zum auslösen der Exception gemacht. Den habe ich gerade mal von throw zu cout geändert und dann gibt er mir den Fehlercode aus. Der Socket löst beim shutdown einen error aus. Das ist ja eigentlich kein fataler Fehler. Da sollte ich mein Exception-Konzept wohl mal überarbeiten *g*
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.01.2008, 12:30 Uhr
stephanw
localhorst


Wenn Du unter Windows arbeitest, müsste der Debugger anspringen, wenn die Ausnahme nirgends gefangen wird. Und dann siehst Du auch, von wo sie kommen. Ausnahmen entstehen nämlich auch, wenn ein Speicherzugriffsfehler auftritt.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.01.2008, 14:41 Uhr
FunnyDingo



Ich benutze gdb. Die IDE läuft zwar auf meiner Windows Kiste, aber kompilieren und ausführen mache ich auf einer virtuellen Linux Maschine.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.01.2008, 16:26 Uhr
FunnyDingo



Gut, ich glaube ich weiß jetzt, warum ich da meine Probleme hatte. Die Stelle an der die tFatalException geworfen wird, liegt in einem anderen Thread als der catch (welcher sich im Thread 1 befindet).

Anscheinend ist es auch nicht möglich, eine Exception in Thread 2 zu werfen und diese in Thread 1 aufzufangen. Daher die o.g. Meldung.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.01.2008, 19:00 Uhr
stephanw
localhorst


Exceptions wandern den Callstack rauf, und den hat jeder Thread für sich. Ziemlich sicher schreibt der C++-Standard nichts zu Threads, daher musst Du Dich wohl selbst kümmern. Mit Windows ist es glaube ich möglich, für jeden Thread einen eigenen Handler für nicht gefangene Ausnahmen zu registrieren. Damit könntest Du irgendeinen thread-sicheren Mechanismus bauen. Wie das für Linux geht, weiß ich leider nicht.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: