help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Playing with g++ exceptions


From: address@hidden
Subject: Playing with g++ exceptions
Date: Sat, 16 Jun 2007 11:04:46 -0000
User-agent: G2/1.0

Hello.

I am trying to figure out how exceptions in g++ work. I am trying
understand who does actual unwinding and how that entity knows where
to unwind to.

Here's my test program: http://www.alexandersandler.net/index.php?id=61

When I disassembled the compiled code I saw that in
some_class::some_method() there's a call to ___cxa_throw() that, as
far as I understood, does the throwing and unwinding. But then, how
does it work? How does it know the location of catch block for that
particular exception in that particular method/function? Tried to look
at the code, but it's

Also, tried to run this in debugger. Weird, but when I do step by
step, exception not getting caught - eventually I find myself right
after some_class::some_method() despite it throws the exception
unconditionally. Exception handled only when I step over
_Unwind_SjLj_RaiseException(). I am using gcc-3.4.4 on cygwin. Also
tried to look at the code, but it's too complex to understand without
understanding main concepts behind the code.

So can you please answer my questions or to point me to a guide that
explains the whole thing or something...
Thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]