backtrace打印segment堆栈信息

#include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> void func() { char *p = NULL; *p = 3; } void sig_handler(int signo) { printf("sig_no:%d/n", signo); int j, nptrs; void *buffer[100]; char **strings; nptrs = backtrace(buffer, 100); strings = backtrace_symbols(buffer, nptrs); if (strings == NULL) { perror("backtrace_symbols"); exit(EXIT_FAILURE); } for (j = 0; j < nptrs; j++) printf("%s/n", strings[j]); free(strings); exit(0); } main() { signal(SIGSEGV, sig_handler); func(); }

你可能感兴趣的:(backtrace打印segment堆栈信息)