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. _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus