您的位置:首页 > 其它

如何在程序异常退出前输出当前进程的堆栈信息 Backtraces

2013-11-27 23:49 507 查看
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 的支持下,有这个方案:

Shell代码

1. 注册一个异常退出时的函数,所有的信息输出工作都在这个函数里完成。

2. 调用 backtrace 和 backtrace_symbols 来获取消息,或调用 backtrace_symbols_fd 来输出消息。

3. 编译源代码时,gcc 加上 -rdynamic 选项。


使用Ptrace跟踪进程收到的异常信号(信号SIGTRAP是通过traceme后wait得到的)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: