捕获崩溃信号 获取堆栈信息

void registerSignalHandler(void) {

    signal(SIGSEGV, handleSignalException);

    signal(SIGFPE, handleSignalException);

    signal(SIGBUS, handleSignalException);

    signal(SIGPIPE, handleSignalException);

    signal(SIGHUP, handleSignalException);

    signal(SIGINT, handleSignalException);

    signal(SIGQUIT, handleSignalException);

    signal(SIGABRT, handleSignalException);

    signal(SIGILL, handleSignalException);

}

void handleSignalException(int signal) {

    NSMutableString *crashString = [[NSMutableString alloc]init];

    void* callstack[128];

    int i, frames = backtrace(callstack, 128);

    char** traceChar = backtrace_symbols(callstack, frames);

    for (i = 0; i <frames; ++i) {

        [crashString appendFormat:@"%s\n", traceChar[i]];

    }

    NSLog(crashString);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近项目上需要对崩溃信息进行处理,要满足崩溃后及时捕捉到崩溃信息,当应用下次打开后再将报文上传至服务器...
    迷失之刃阅读 4,716评论 9 8
  • 文章目录 一. 系统Crash 二. 处理signal 下面是一些信号说明 关键点注意 三. 实战 四. Cras...
    MTDeveloper阅读 1,168评论 1 2
  • 做程序员的都知道,BUG永远是改不完的,如果已经上线的版本出现闪退的情况, 会让用户体验非常不好.所以天朝的骑士们...
    残夜孤鸥阅读 13,368评论 25 24
  • 《指数基金投资指南》共读输出第一篇 自己是个实实在在的投资小白,到现在为止,自己的投资仅限于余额宝,投资知...
    宋慧英阅读 193评论 0 2
  • 聚多多在短短三年里就登陆美国时代广场的纳斯达克大屏幕,老板许加也成为了拥有四五十个员工的优秀CEO,这些成功与背后...
    老葛_5583阅读 418评论 0 0