美文网首页
iOS崩溃的产生和解析

iOS崩溃的产生和解析

作者: jayhe | 来源:发表于2017-03-10 09:23 被阅读0次

    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

    修改:

    需要cd到appname.app.dSYM/Contents/Resources/DWARF目录下,去执行dwarfdump –uuid appname才能解析出UUID

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

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

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

    相关文章

      网友评论

          本文标题:iOS崩溃的产生和解析

          本文链接:https://www.haomeiwen.com/subject/ujlngttx.html