iOS 崩溃(crash)那点事儿

1,079 阅读2分钟

一、被动式

主要通过捕获系统异常,记录并打印异常日志上传至后台,通常使用第三方统计平台(友盟、bugly、Google Analysis),以下是我处理崩溃的途径:

1、友盟统计平台收集的日志

便于定位问题,建议将上传至商店的打包好中dSYM文件,压缩成 zip 格式,上传友盟崩溃日志中,对应版本的符号表管理中。
注:每个版本都要有备份,要不就不能解析并定位问题了。

2、Xcode 工具收集的日志(路径:window->Organizer->Crashes)

二、主动式

1、预防崩溃 AvoidCrash可以有效截获由于数据异常导致崩溃现象,并可以将截获的崩溃日志上传到自家服务器或三方统计平台上 注:此类库作者暂停维护

原文链接:github.com/chenfanfang…

VDM github.com/vipshop/VDM…

SafeKit github.com/JJMM/SafeKi…

2、容错处理(异常数据导致崩溃) 1).JKDataHelper 2).NullSafe(推荐) 3).YRClassSafeCategory 4).使用 AF 网络框架 移除 null

相关链接:

www.cnblogs.com/fengmin/p/8… www.jianshu.com/p/b6215e922… blog.csdn.net/u010124617/… www.jianshu.com/p/5ce66c0a6… github.com/nicklockwoo… github.com/YueRuo/YRCl…

3、优化

  1).自动静态代码工具
        1>.Clang Static Analyzer 优点:和 Xcode 集成度高、好用,支持命令行 缺点:对 oc 检查不全
        2>.OCLint 优点:更多的检查规则和定制、和工具集成
        3>.Infer 优点:效率高、规模大]支持增量、分解分析
        4>.coverity
        5>.DeployMate 检查 Api 的兼容性

每个静态扫描工具都有各自特点,建议根据自家工程代码量的规模、复杂度有针对的选择或结合使用

相关链接:

www.jianshu.com/p/b81a9f5bc… testerhome.com/topics/9742 www.cocoachina.com/ios/2017080…

2).内存泄漏检测工具
    原始工具:xcode 集成 Instrument 的 Leak/Allocations

    第三方工具:
        1>.MLeaksFinder
        2>.PLeakSniffer
        3>.FBRetainCycleDetetor

使用结果:

PLeakSniffer 模拟器大概率检测不到内存泄漏 MLeaksFinder 误检测内存泄漏大,通过FBRetainCycleDetetor(部分)定位循环引用路径

相关链接

wereadteam.github.io/2016/02/22/… mrpeak.cn/blog/leak/ www.cocoachina.com/ios/2017010… github.com/skyming/iOS…