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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在iOS开发中,Crash无疑是App的致命杀手。作为一个严谨的iOS 开发人员来说,写出优秀的健硕的无Cr...
    Ekkooo丶阅读 9,202评论 2 22
  • iOS程序崩溃定位,一般会出现在3种地方。 1,我们正在编写程序的时候,运行崩溃。 2,测试阶段,测试出现的崩溃闪...
    出门向左走阅读 7,013评论 0 13
  • 以前对于这方面了解的很少,在工作中需要用到这方面的东西,所以,把自己学习的东西写出来分享一下。对于carsh日志来...
    zcdong阅读 7,898评论 5 5
  • 原文:http://www.cnblogs.com/smileEvday/p/Crash1.html iOS Cr...
    赤兔人生阅读 3,982评论 0 2
  • 一、crash log的获取 当你的app 在手机上crash的时候,会在手机上自动生成一个崩溃日志,也就是我们说...
    He_Define阅读 60,833评论 37 148

友情链接更多精彩内容