插个眼. 记录一下最近分析崩溃日志
经常有客户反应 APP崩溃,但是又不能有效地复现, 不知道如何解决. 所以决定导入一款可以上报 Crash 日志的软件. 也考虑过国外的版本 考虑到语言通用 和 使用的方便. 还是选择了友盟统计.
然后发现 使用还是比较简单的 , 友盟方便 给出了非常明确的使用说明和常见问题清单
友盟导入传送门 如何导入友盟 SDK
扫盲级别的说明. 应该都能看懂
在 '我的应用 >> 错误分析' 下面 可以看到 友盟上传回来的 错误日志. 怎么看错误日志
#warning 这里要说一下 友盟的 crash 日志 简直蠢得像狗, 只能除了简单的数组越界 能告诉你位置 其他的基本全靠猜, 这里说一下 怎么分析 crash 日志
这里借助一下 大神写的工具 DSYMTools 点击打开链接
里面已经 详细的说明了 怎么解析
为了方便,举一个 简单的例子
1. 创建一个工程 名字就叫 CrashTest 写完打包扔蒲公英上就行 然后扫码下载
2. 导入友盟 SDK , 申请UMappKey 方法上面已经说了
配置正确, 那么每次的 crash 日志 就会上传到 友盟的服务器,在友盟哪里就能够看到了
我在工程里埋的坑的位置 如下如 注意具体位置. 这是一个数组越界,具体位置 在 ViewController.m 第52行 ,
这是第二个 雷 字典value = nil, 位置是 SSViewController.m loadData 57行
暂时 就写了这两个坑 .
下载这个 APP ,运行 触发两个雷,然后 在友盟错误列表就能看到了
先看数组越界的错误 点进去可以查看信息, 对应的 dSYM的 UUID, 错误代码的具体地址.
有了这些信息 , 我们运用 sDYMTools 就可以定位到具体的位置.
步骤: 导入我们对应版本的 archive 文件(拖进去就行), 选择对应的 cpu 信息,如果错误代码地址,然后点击 分析
看到分析的结果没. [ViewController BTClick:] 方法报错, 具体代码地址为 ViewController.m 的 第56行.
和我们埋的雷位置 完全吻合.
同样的姿势,可以查找第二个雷, 同样的 位置完全吻合
Ps: 这里一定要注意 要保留对应的 版本的 archive 文件 , 在 archive 文件包内容里面 有一个 sDYM的文件夹,里面有对应的 sDYM文件,文件名就是 UUID,
这个 UUID 要和友盟 Crash 文件信息的sDYM UUID 匹配. 没有看到匹配的 搞不好就是你的 archive 文件不对