怎样让 C++ 中 throw exception 产生的 coredump 带上栈
1. 问题
一个 C++ 程序,如果 throw 了 exception ,但是又没有 catch,那么一般会产生 coredump, 问题是,在 gcc 4.x 版本产生的 coredump 文件中,没有 throw 时候的堆栈信息,导致不知道是哪里 throw 的,没法查问题。
原因是 gcc 4.x 的 /libstdc++-v3/src/c++11/thread.cc:92 里面有个 catch(…),所以 stack unwind 了,就没了 throw 时候的 stack 。
|
|
https://abcdabcd987.com/libstdc++-bug/
一个解决办法是可以升级 GCC 7 ,或者可以用更简单的办法: