sigaction检测段错误示例
来源:互联网 发布:第三语言学什么 知乎 编辑:程序博客网 时间:2024/05/16 10:21
#include <stdio.h>#include <setjmp.h>#include <signal.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <execinfo.h>#define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])#define DEBUG#ifdef DEBUG#define LOG(fmt,args...) printf("%s():%d " fmt, __FUNCTION__, __LINE__, ##args)#else#define LOG(fmt,args...) #endifextern void dump_backtrace(void);
#include "common.h"void dump_backtrace(void){int j, nptrs;void *buffer[32];char **strings;nptrs = backtrace(buffer, ARRAY_SIZE(buffer) );printf("backtrace() returned %d addresses:\n", nptrs);strings = backtrace_symbols(buffer, nptrs);if (NULL == strings){ perror("backtrace_symbols"); exit(-1);}for (j = 0; j < nptrs; j++){ printf(" %s\n", strings[j]); }free(strings);}
#include "common.h"void test(){*((int*)0x04) = 0;}void siginfo_handler(int signum, siginfo_t * siginfo, void * context){LOG("Signal Number: %d\n", signum);LOG("Address: %p\n", siginfo->si_addr);dump_backtrace();exit(-1);}int main(){int ret = 0;struct sigaction act;act.sa_flags = SA_SIGINFO;act.sa_sigaction = siginfo_handler;sigemptyset(&act.sa_mask);ret = sigaction(SIGSEGV, &act, NULL);if(0 != ret){perror("sigaction() failed");}test();return 0;}
1 0
- sigaction检测段错误示例
- linux c/c++ 段错误(Segmentation fault 查找示例2)
- Linux系统sigaction函数的使用示例
- sigaction()
- sigaction
- sigaction()
- sigaction()
- sigaction()
- sigaction
- sigaction
- sigaction()
- sigaction
- sigaction
- sigaction
- 段错误
- 段错误
- 段错误
- 段错误
- 2.12. JMX Naming
- 每天一个 Linux 命令(17):whereis 命令
- Java Map数据结构与排序
- 如何解决web项目没有生成web.xml文件?
- 程序员的思维修炼 开发认知潜能的九堂课 读书笔记
- sigaction检测段错误示例
- thinkphp--foreach循环里面的jquery+ajax的点击事件的数据同步
- ITOO遇到的问题
- 2.13. Performance and Optimization
- 【面试题】剑指Offer-6-根据前序和中序遍历重建二叉树
- L1-026. I Love GPLT
- 38. Count and Say
- 最新版本的starssl申请免费证书
- L1-027. 出租