iOS崩溃的产生和解析

iOS崩溃

崩溃的产生

应用违反操作系统规则

1. 违反iOS规则包括在启动、恢复、挂起、退出时watchdog超时、用户强制退出和低内存终止。

application:didFinishLaunchingWithOptions:

applicationWillResignActive:

applicationDidEnterBackground:

applicationWillEnterForeground:

applicationDidBecomeActive:

applicationWillTerminate:

2. 用户强制退出:当APP无响应的时候,用户通过双击home键杀掉APP或者直接关机

低内存终止:当内存使用达到一定程度时,操作系统将发出一个UIApplicationDidReceiveMemoryWarningNotification 通知。同时,调用 didReceiveMemoryWarning 方法。

此时,为了让应用继续正常运行,操作系统开始终止在后台的其他应用以释放一些内存。所有后台应用被终止后,如果你的应用还需要更多内存,操作系统会将你的应用也终止掉,并产生一个崩溃日志,(会有一个jettisoned字样)

3. 应用中有bug

(1). Exception Code

0x8badf00d 这个异常编码表示应用是因为发生watchdog超时而被终止的,通常是应用花费了太多的时间而无法启动、终止货响应系统事件

0xdeadfa11 “dead fall” 表示应用是被用户强制退出的

0xdead10cc “dead lock” 表示应用在后台运行时占用系统资源

(2). Exception Type

EXC_CRASH (SIGABRT) 通常是由于对象接受到了未实现的消息引起的

EXC_BAD_ACCESS(SIGSEGV/SIGBUS) 通常是内存问题,比如访问了已被释放的内存

EXC_BREAKPOINT(SIGTRAP) 异常退出

EXC_GUARD 访问非法资源

崩溃的解析

1. 打开终端,cd到dSYM文件

查看dYSM的UUID,主要是判断崩溃的版本和当前的符号表的版本是否一致

dwarfdump –uuid appname.app.dSYM

2. 如果一致,查看堆栈的跟APP相关的崩溃的地址信息

dwarfdump –arch=armv7 –lookup 0x97525 /…/appname.app.dSYM/Contents/Resources/DWARF/appname

得到解析之后的信息,能获取到崩溃的类和行号

你可能感兴趣的:(iOS崩溃的产生和解析)