Hi everyone,

I am trying to find out how g++ implements error handling. My environment is CPU AMD Athlon(tm) XP 2000+, Debian GNU/Linux 3.1, GCC 3.4.3-6, and Glibc 2.3.2.ds1-20. After researching assembling codes generated by g++, I have known the beginning and ending part. That is, we will call __cxa_allocate_exception when writing 'throw expression', then the constructor of the exception class, and then __cxa_throw. __cxa_throw calls _Unwind_RaiseException. But this function is so complex for me that I cannot get the outline of the real process. However, I found uw_install_context (which is a macro) will be called if _Unwind_RaiseException succeeds, and the body of uw_install_context contains calling of longjmp. So setjmp will be somewhere, but I did no find it. Could somebody tell me the outline of the unwinding process?

Thanks in advance.

Regard, Guanpeng Xu

_________________________________________________________________
免费下载 MSN Explorer: http://explorer.msn.com/lccn


Reply via email to