关于iOS开发:iOS开发通过第三方分析工具对dSYM文件进行分析

1次阅读

共计 2432 个字符,预计需要花费 7 分钟才能阅读完成。

前言

在 iOS 开发过程的时候,在遇到报错的时候抛出的报错异样,须要疾速定位到具体报错地位,有时候通过惯例的代码排查办法能够解决,然而有些时候通过惯例的形式不能很好的定位到报错地位,尤其是遇到一些隐性的报错信息,不能疾速的定位到报错起因信息,这样就要借助第三方的错误信息剖析来解决了。

那么本文就来分享一下在 iOS 开发过程中借助第三方工具来剖析解决报错异样的解决办法,本文案例应用的友盟 U -APM 来做应用案例。通过在我的项目中集成友盟剖析工具,应用友盟 U -APM 来剖析报错异样信息,就能在友盟给出的错误信息中,很不便的找出客户端异样的信息,比方很多像数组越界却只给出了 * -[__NSArrayM objectAtIndex:]: index 50 beyond bounds [0 .. 39]’ 这类错误信息,这种很难定位具体报错地位的信息,如下图所示:


遇到这种问题的话,如果通过 objectAtIndex 去检索谬误的中央,那将会是一个微小的工作量,那么怎么办能力加重工作量呢,那就是上面要介绍的状况了。

一、dSYM 文件

Xcode 编译我的项目后,咱们会看到一个同名的 dSYM 文件,dSYM 是保留 16 进制函数地址映射信息的直达文件,咱们调试的 symbols 都会蕴含在这个文件中,并且每次编译我的项目的时候都会生成一个新的 dSYM 文件,位于 /Users/< 电脑用户名 >/Library/Developer/Xcode/Archives 目录下,对于每一个公布版本咱们都很有必要保留对应的 Archives 文件。

二、dSYM 文件的作用

当咱们应用程序 release 模式打包或上线后,不会像在 Xcode 中那样直观的看到用解体的谬误,这个时候就须要剖析 crash report 文件了,iOS 设施中会有日志文件保留咱们每个利用出错的函数内存地址,通过 Xcode 的 Organizer 能够将 iOS 设施中的 DeviceLog 导出成 crash 文件,这样就能够通过出错的函数地址去查问 dSYM 文件中程序对应的函数名和文件名。然而前提是咱们须要有软件版本对应的 dSYM 文件,这也是为什么很有必要保留每个公布版本的 Archives 文件了。

三、如何把文件一一对应

每一个 xxx.app 和 xxx.app.dSYM 文件都有对应的 UUID,crash 文件也有本人的 UUID,只有这三个文件的 UUID 统一,咱们就能够通过它们解析出正确的谬误函数信息了。

1. 查看 xxx.app 文件的 UUID,terminal 中输出命令:dwarfdump –uuid xxx.app/xxx (xxx 是你的项目名称)

2. 查看 xxx.app.dSYM 文件的 UUID,在 terminal 中输出命令:dwarfdump –uuid xxx.app.dSYM

3.crash 文件内第一行 Incident Identifier 就是该 crash 文件的 UUID。

四、dSYM 文件剖析工具的应用

首先分享一下通过友盟平台的 U -APM 工具进行剖析 crash 剖析,dSYM 文件的操作步骤,具体如下所示:

1、首先关上友盟官方网站,而后登陆友盟账号,如果没有注册过友盟平台的账号,须要注册之后登录进入;

2、登陆进入友盟之后,点击“进入工作台”,而后会看到工作台主界面的各个菜单栏,而后点击抉择右上角的下拉菜单“产品”—>“利用性能监测平台 (U-APM)”,单击进入 U -APM 利用性能监测平台的疏导主界面,而后间接点击进入“进入后盾”,(这里要留神的是如果你没有对应的 app 来体验友盟的利用性能监测平台的 app,能够间接下载友盟官网提供的体验 demo,本文就是间接应用友盟的体验 demo 来测试利用性能监测的);


3、进入 U -APM 利用性能监测平台的后盾主界面之后,如果是首次应用友盟的利用性能监测平台,须要在后盾主界面外面创立你的 app;

4、在友盟工作台外面创立新建 app 利用之后,如果没有 app 外面没有集成友盟的 sdk,会提醒“未集成”,点击 app 列表对应的右侧的“集成”按钮,进入集成友盟 sdk 的设置疏导步骤界面,此时友盟在你创立 app 的时候就会生成 app 对应的 appkey,获取到集成友盟 U -APM 的 appkey,而后依据疏导提醒把友盟的 sdk 集成在本人的 iOS 我的项目工程外面,依据友盟官网集成文档步骤来操作即可,这里不再多说;


5、在 iOS 我的项目中,须要把友盟的 appkey 填写在我的项目的 AppDelegate.m 文件外面对应的注册初始化友盟的中央;


6、iOS 我的项目集成完友盟之后,运行我的项目,app 运行之后的任何 crash 都会上报到友盟工作后盾,能够通过友盟的 U -APM 利用性能监测的后盾来查看 app 的 crash 日志,而后进行剖析操作;

Demo 示例:



7、这里着重介绍一下友盟对于 dSYM 文件的解决剖析的操作,须要把电脑上的 iOS 我的项目编译生产的所有 dSYM 文件夹间接压缩,而后通过 UUID 与符号表做关联,而后上传符号表,有对应的符号表治理界面,这里不再多说;

8、依据上传之后的符号表查看解体的日志,最好是通过 uuid 的获取形式从原始日志的“Binary Image”段进行获取具体的 crash 起因;

9、最初依据具体的报错解体的信息,能够具体的发现具体的报错起因,这种形式非常适合排查查找隐性的不可预感的 app 的 crash。

 附:友盟开发者核心—> 文档核心—> 利用性能监控 U -APM 的阐明文档链接 https://developer.umeng.com/docs/193624/cate/193275

最初

尤其是上架利用的时候,有些时候苹果反馈的信息外面也会给具体的谬误日志,你能够通过 dSYM 工具间接能够找到具体报错地位,百试百灵。如果你感觉我写的内容对你有帮忙请点赞,如果想和我更进一步交换探讨,也能够关注我的微信公众号,那外面同样有更多应用的办法技巧等着你!以上就是本章的全部内容,欢送关注三掌柜的微信公众号“程序猿 by 三掌柜”,三掌柜的新浪微博“三掌柜 666”,欢送关注!

正文完
 0