backtrace-----打印进程异常退出时的堆栈信息
2013-05-14 16:46
211 查看
#include <execinfo.h> #include "debug_trace.h" #define TRACE_SIZE 1024 static void trace_print(int signal_type) { int trace_id = -1; void *buffer[100]; char **info = NULL; trace_id = backtrace(buffer, TRACE_SIZE); info = backtrace_symbols(buffer, trace_id); if (NULL == info) { return; } int i = 0; char trace_buff[TRACE_SIZE]; for (i = 0; i < trace_id; i++) { sprintf(trace_buff, "echo %s >> ./trace_info_%d.txt", info[i], signal_type); system(trace_buff); } sprintf(trace_buff, "echo \"###################################\" >> ./trace_info_%d.txt", signal_type); system(trace_buff); } static void signal_hadle_fun(int signal_type) { switch(signal_type) { case SIGHUP: case SIGINT: case SIGQUIT: case SIGILL: case SIGTRAP: case SIGABRT: case SIGBUS: case SIGFPE: case SIGKILL: case SIGSEGV: case SIGPIPE: case SIGTERM: trace_print(signal_type); exit(0); break; } } void debug_trace_init(void) { signal(SIGHUP, signal_hadle_fun); signal(SIGINT, signal_hadle_fun); signal(SIGQUIT, signal_hadle_fun); signal(SIGILL, signal_hadle_fun); signal(SIGTRAP, signal_hadle_fun); signal(SIGABRT, signal_hadle_fun); signal(SIGBUS, signal_hadle_fun); signal(SIGFPE, signal_hadle_fun); signal(SIGKILL, signal_hadle_fun); signal(SIGSEGV, signal_hadle_fun); signal(SIGPIPE, signal_hadle_fun); signal(SIGTERM, signal_hadle_fun); }
相关文章推荐
- backtrace-----打印进程异常退出时的堆栈信息
- backtrace-----打印进程异常退出时的堆栈信息
- backtrace-----打印进程异常退出时的堆栈信息
- 如何在程序异常退出前输出当前进程的堆栈信息 Backtraces
- Android下面打印进程函数调用堆栈(dump backtrace)的方法
- PLSQL获取异常堆栈信息-dbms_utility.format_error_backtrace(正确抛出异常信息)
- backtrace打印segment堆栈信息
- Android下面打印进程函数调用堆栈(dump backtrace)的方法
- Android下面打印进程函数调用堆栈(dump backtrace)的方法
- 打印动态链接时进程堆栈的初始化信息(摘自<程序员的自我修养>)
- 日志如何打印异常堆栈信息。
- Android笔记 - 如何避免ActivityNotFound异常,查看Activity堆栈信息,获取进程名
- Linux程序异常退出打印调用堆栈
- Android下面打印进程函数调用堆栈(dump backtrace)的方法(http://blog.sina.com.cn/happychang2007)
- slf4j如何打印java异常堆栈信息throwable对象
- backtrace&&backtrace_symbols 查找段错误 打印堆栈信息
- log中打印e异常信息的堆栈
- 打印Java异常堆栈信息
- Struts2不打印异常堆栈信息
- Linux程序异常退出打印调用堆栈