I built git master gcc today (317121db1372a50999ab1cba75aa59df0f2eff7c) using the default arguments on my x86-64 Fedora 18 machine. Then I compiled this program with the new g++ and ran it in gdb: int main() { throw 5; } Then, at the crash, I went up until I was in the verbose terminate handler frame. At this point I looked at the locals: #2 0x00007ffff7d59515 in __gnu_cxx::__verbose_terminate_handler () at ../../../../gcc/libstdc++-v3/libsupc++/vterminate.cc:95 95 abort(); (gdb) info local terminating = true t = <optimized out> Here, it is unfortunate that 't' is optimized out. If it were not, then the thrown exception type would be obvious from the stack trace. As it is, this information is written to stderr but otherwise lost -- for example, ABRT cannot easily pick it up.
>vterminate.cc This is compiled with -O2 so this kinda expected to be optimized out.