http://www.gnu.org/software/libc/manual/html_node/Backtraces.html#Backtraces
http://www.gnu.org/software/libc/manual/html_node/Termination-in-Handler.html#Termination-in-Handler
http://www.cons.org/cracauer/sigint.html
用ulimit打开系统的core dump
用 gdb 运行的时候如果异常可以用 bt 命令查看各种各样的信息,另外用 strace 来运行你的程序可以检测所有的系统调用,尽管不是查看堆栈,但在某些时候也有助于分析错误 。
在 Glibc 的支持下,有这个方案:
- 1. 注册一个异常退出时的函数,所有的信息输出工作都在这个函数里完成。
- 2. 调用 backtrace 和 backtrace_symbols 来获取消息,或调用 backtrace_symbols_fd 来输出消息。
- 3. 编译源代码时,gcc 加上 -rdynamic 选项。