查看奔溃分析
- Exception Type: 在
EXC_CRASH (SIGKILL)
中EXC_CRASH
为Mach层的异常类型,定义在darwin-xnu的/osfmk/mach/exception_types.h,EXC_CRASH
表示进程异常退出了。通常是因为未捕获的Objective-C/C++的异常导致进程被终止,这时BSD层的信号应该为 SIGABRT,Exception Type为EXC_CRASH (SIGABRT)
- 后者为 BSD层的信号,定义在darwin-xnu的/bsd/sys/signal.h,SIGKILL表示进程被系统终止,而且这个信号不能被阻塞、处理和忽略。这时可以查看Termination Reason字段了解终止的原因。
- (Mach层异常和BSD层的信号的区别和关系在系列其他文章中讨论)
- Exception Codes: 这个字段一般用不上,当崩溃报告包含一个未命名的异常类型时,这个异常类型将用这个字段表示,形式是十六进制值。
- Exception Note:
EXC_CORPSE_NOTIFY
和EXC_CRASH
定义在同一个文体中,意思是进程异常进入 CORPSE状态。 -
Termination Reason: 这里主要关注 Code 0x8badf00d,可以在Apple 文档中查看到 0x8badf00d 表示进程因为watchdog 超时而被iOS 结束进程。