美文网首页
iOS---crash日志分析

iOS---crash日志分析

作者: jeff_guan | 来源:发表于2017-12-11 17:51 被阅读0次

    crash 日志产生的两种原因

    1. 违反 iOS 策略
    2. 代码所出现的 bug

    常见的Exception Type & Exception Code

    Exception Type

    1. EXC_BAD_ACCESS

      通常用于访问了不改访问的内存导致。

      • SIGSEGV: 通常由于重复释放对象导致,这种类型在切换了ARC以后应该已经很少见到了。
      • SIGABRT: 收到Abort信号退出,通常Foundation库中的容器为了保护状态正常会做一些检测,例如插入nil到数组中等会遇到此类错误。
      • SEGV:(Segmentation Violation),代表无效内存地址,比如空指针,未初始化指针,栈溢出等;
      • SIGBUS:总线错误,与 SIGSEGV 不同的是,SIGSEGV 访问的是无效地址,而 SIGBUS 访问的是有效地址,但总线访问异常(如地址对齐问题)
      • SIGILL:尝试执行非法的指令,可能不被识别或者没有权限。
    2. EXC_BAD_INSTRUCTION

      此类异常通常由于线程执行非法指令导致。

    3. EXC_ARITHMETIC

      除零错误会抛出此类异常。

    4. EXC_BREAKPOINT//SIGTRAP

      与异常退出类似,如果存在debugger,则它被唤起;否则,则与异常退出的处理一致。

    5. EXC_GUARD

      访问非法资源,例如:文件描述符已经被关闭,还继续访问。

    6. EXC_RESOURCE

      达到资源访问上限,这不是崩溃,而是os发出的一个通知

    具体操作

    1. 从崩溃系统把相关文件下载下来,.crash 文件和 .dSYM 文件
    2. 使用命令解析
    cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/Loong/Downloads/kiwi/dSYMs 
    
    ./symbolicatecrash kiwi-2017-11-11-151231.crash /Users/Loong/Downloads/kiwi/dSYMs/kiwi.app.dSYM >  kiwi.crash
    
    export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
    

    参考文章:

    1. https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-ANALYZING_CRASH_REPORTS
    2. http://www.jianshu.com/p/f8a6945a55e6

    相关文章

      网友评论

          本文标题:iOS---crash日志分析

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