iOS---crash日志分析

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日志分析)