美文网首页
异常定位实践 2022-05-27 周五

异常定位实践 2022-05-27 周五

作者: 勇往直前888 | 来源:发表于2022-05-28 00:05 被阅读0次

友盟

这个时间点,友盟的异常统计模块叫做U-APM
接入之后,发现很不好用。

  • 从友盟后台看到的crash文件数量远远少于实际的崩溃次数

  • crash文件的UUID和dSYM符号表文件的不一致

  • dSYM工具不是很准确,总感觉不对

后来发现是.dSYM文件失效导致的问题

腾讯Bugly

友盟不起作用,解决不了问题,有文章说腾讯Bugly更简洁更好用,那么就再增加一个试试。

1. 用QQ登录

用手机QQ扫描一下就能登录。没QQ的就只能先注册一个。
为此,找回了多年没有登录过的QQ号。

2. 在管理后台新建产品,这个和友盟很像。

新建产品

3. 集成

用CocoaPods的方式,只要一句话就可以

pod 'Bugly'

然后,就pod install一下就好,常规操作

4. 接入代码

也是一句话的事;AppId可以从管理后台拿到。

[Bugly startWithAppId:@"此处替换为你的AppId"];

做一个崩溃实验

在代码中,让字典设置nil,就会崩溃。运行了两次崩溃,Bugly能抓到,而且很快;但是友盟只能抓到1次。

Bugle抓住了2次 友盟只抓住了1次

DSYM工具

  • 为了把地址转化为有意义的代码,有大神写了一个工具。
    dSYMTools
    直接以zip的方式下载下来,是一个dmg的安装文件,直接安装就可以用。

  • 需要用.dSYM文件,不能用.xcarchive文件。因为.xcarchive文件中有很多.dSYM文件,包括很多第三方库。虽然作者说用.xcarchive文件也可以,但是我试下来是不行的。

导入.dSYM文件
  • 至于怎么导出.dSYM文件,可以参考Bugly的说明文档
    通过Xcode找回

  • 关于UUID:符号表文件(.dSYM文件)与crash文件中都有UUID。并且现在都是动态库。我们的APP,第三方库,还有系统库,都有相应的UUID,这个要区分开来。

Bugly的UUID 友盟的UUID
  • 两个地址:基地址 + 偏移量 = 目标地址;(其中偏移量是10进制数表示的)

很奇怪,友盟和Bugly给出的“基地址”和“目标地址”不一样;但是通过工具找到的崩溃点代码是一模一样的。当然两者的偏移量是一样的。

将地址转化为代码 Bugly的堆栈地址 友盟的堆栈地址

.dSYM文件上传

把符号表文件(.dSYM文件)上传,可以帮助我们把崩溃点的地址转化为能看懂的代码。(其实就是起到上面讲的dSYM工具的作用)

  • Bugly提供了一个工具,并且提供了工具的下载链接,里面有使用说明,照着做就好了。工具下载地址
Bugly的符号表上传工具
  • 友盟的没有找到相关的工具,所谓的API上传方式也没有找到相关说明,不知道怎么做。手动上传的地方到是找到了。
友盟手动上传符号表的位置
  • 上传了符号表文件之后,就能正确解析了。能够看到崩溃点的代码。
Bugly的符号表解析 友盟的符号表解析

关于BitCode

  • 如果是Ad-Hoc的方式导出,那么就应该关闭BitCode,否则的话符号表文件会失效。Bugly干脆就上传不了。友盟的话能上传,但是解析不了。大神的DSYM工具也失效了。
Ad-Hoc关闭Bitcode
  • 如果是发布到苹果市场,保持默认的全打钩不要动就好了。也就是打开Bitcode,同时上传符号表文件。苹果后台会结合Bitcode重新生成符号表文件,要下载才能上传到bugly或者友盟的后台。
苹果市场保持默认的打钩不动 苹果市场下载符号表文件
  • 总之,如果开了Bitcode,那么本地的(也就是从.xcachive拿出来的)符号表文件就失效了。所以,通过Ad-Hoc方式分发的,就不要开Bitcode了。当然,不开BitCode会导致安装包变大很多,不利于APP瘦身。

相关文章

  • 异常定位实践 2022-05-27 周五

    友盟 这个时间点,友盟的异常统计模块叫做U-APM接入之后,发现很不好用。 从友盟后台看到的crash文件数量远远...

  • 2022-05-27

    Nat Comm | 可视化棕榈酰化过程揭示癌症中相关蛋白定位变化 原创图灵基因图灵基因2022-05-27 13...

  • 2022-05-27

    2022-05-27

  • 戒定慧·《感恩日志》重启第14天

    2022-05-27(周五) 农历四月二十七 戒定慧·《感恩日志》重启第14天 【18:02】 我是多么的快乐和感...

  • 2022-05-27 周五

    今天我想聊一下读书这件事。 对于我们每个人来说,我们都知道:读书是最好的学习。通过读书我们能够获得更多的知识点,拓...

  • app服务治理(二):大数据下的异常定位

    导语:系列一搞定异常发现后,就轮到异常定位了。所谓异常定位,就是找到异常发生处,比如异常是发生在哪个模块或哪行代码...

  • (三)python错误与异常&面向对象编程

    python错误与异常 语法错误与定位 异常捕获、异常处理 try:xxxexcept: 自定义异常 python...

  • 异常处理实践

    文章来源: 陈同学|异常处理实践 本文分享自己关于异常处理的理解。 产品是2B业务,且用户量小,因此以下思考均基于...

  • flutter 富文本渲染异常

    起因 bugly捕捉到大量系统异常,所有方法都在render层,无法定位问题代码。 异常1 异常2 异常3 异常4...

  • 想念小卢了

    幸福日志2022-05-27 周五 晴 大约有半年没倒拾我和小卢一起搞的小花园。今天从窗台看,去年从花市捡的一个别...

网友评论

      本文标题:异常定位实践 2022-05-27 周五

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