iOS的App的崩溃类型解释

在Unix系统中标准的6种信号:

  • SIGABRT: 表示程序异常终止,英语单词即Signal Abort
  • SIGFPE: 表示浮点数异常错误,英语单词即Signal Floating Point Exception
  • SIGILL: 表示无效指令/操作,英语单词即Signal Illegal
  • SIGINT: 表示交互式注意请求发送到了程序引起了中断,英语单词Signal Interrupt
  • SIGSEGV: 表示无效的内存访问,英语单词是Segmentation Violation
  • SIGTERM: 表示终止请求发送到了程序引起了程序退出,英语单词是Signal Terminate

除了以上6中崩溃以外,还有一些在Unix或者Unix-Like系统的15种信号

在iOS中,信号指令定义的宏比较多

iOS的App的崩溃类型解释_第1张图片

主动让程序崩溃

调起崩溃的函数在signal.h文件中,其中有raise()方法可以发起崩溃,例如:

#import <signal.h>

// 直接删掉此进程
raise(SIGKILL);

例如一张崩溃的日志截图

iOS的App的崩溃类型解释_第2张图片

其中:
Exception Type 就是崩溃的类型,表示程序异常终止

Triggered by Thread 表示在主线程崩溃了,后面的数字是几,就是在那个线程崩溃的


Bad Memory Access [EXC_BAD_ACCESS // SIGSEGV // SIGBUS]

进程尝试去访问一个无效的内存,或者说,进程尝试去访问一个受保护等级的区域内存,例如:往read-only内存写入数据。

Abnormal Exit [EXC_CRASH // SIGABRT]

进程异常退出。大部分通常的引起此崩溃的原因是由于未捕获到Objective-C/C++的异常而引起系统调用abort()函数。

App Extensions可能会引发此崩溃,原因是可能由于初始化时间太长导致的。如果遇到LAUNCH_HANG的子类型表示启动时进程被悬停了。

更多的请去读Apple官方文档分析崩溃报告
https://developer.apple.com/library/archive/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-ANALYZING_CRASH_REPORTS

你可能感兴趣的:(iOS攻防,IOS,Objective-C,ios,崩溃,信号,SIGABRT)