iOS崩溃crash⼤解析(推荐收藏)
前⾔
iOS崩溃是让iOS开发⼈员⽐较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地⽅很重要。调试阶段是⽐较容易到出问题的地⽅的,但是已经上线的app并分析崩溃报告就⽐较⿇烦了。
之前我总是到⼀个改⼀个,并靠别⼈测试重现来出问题的地⽅,这样往往⽐较耗费时间。⽽且⽐较难到原因的时候每次都是到⽹上各种资源搜索,解决了之后也没有认真分析原因及收集,时间长了之后就会忘记原来解决过的问题,别⼈来问我的时候我也不能很快到答案。所以这⾥写⼀个关于崩溃的⽂章,以便之后⾃⼰查询⽤。
这⾥也会开始写⼀个demo,争取把所有的崩溃原因都写进demo⾥。
1.崩溃分析
1.1.崩溃⽇志(crash log)
1. o de中查看崩溃信息
xcode->Window->Organizer->Crashes
image
1.1.
2.根据符号表来监测奔溃位置
什么是符号表
符号表就是指在Xcode项⽬编译后,在编译⽣成的⼆进制⽂件.app的同级⽬录下⽣成的同名的.dSYM⽂件。
.dSYM⽂件其实是⼀个⽬录,在⼦⽬录中包含了⼀个16进制的保存函数地址映射信息的中转⽂件,所有Debug的
symbols都在这个⽂件中(包括⽂件名、函数名、⾏号等),所以也称之为调试符号信息⽂件。
符号表有什么⽤
符号表就是⽤来符号化 crash log(崩溃⽇志)。crash log中有⼀些⽅法16进制的内存地址等,通过符号表就能到对应的能够直观看到的⽅法名之类。
结交⼈脉:
作为⼀个开发者,这是⼀个iOS技术圈⼦:1001906160 ,进密码‘000’,不管你是⼩⽩还是⼤⽜欢迎⼊驻 ,分享BAT,阿⾥⾯试题、⾯试经验,讨论技术, ⼤家⼀起交流学习成长!
另附上⼀份各好友收集的⼤⼚⾯试题,进可⾃⾏下载!
image.png
如何得到.dsYM⽂件
我们在Archive的时候会⽣成.xcarchive⽂件,然后显⽰包内容就能够在⾥⾯到.dsYM⽂件和.app⽂件。
如何使⽤.dsYM
1.友盟.dsYM分析
如果是使⽤友盟的话,我们能在错误列表⾥看到⼀些错误,然后可以导出奔溃信息,导出的⽂件为.csv⽂件。友盟有⼀个分析⼯具,使⽤那个⼯具可以看到⼀些错误的函数,⾏号等。但是很容易分析失败,不知道为什么?
注意:使⽤的时候要确保你的.xcarchive在 ~/Library/Developer/Xcode/或该路径的⼦⽬录下。
.xcarchive⾥的.dsYM⽂件和.app⽂件是有对应的UUID的。然后你的错误详情⾥也是有UUID,只有当UUID相等时才能分析对。
我犯的错误:因为我们是两个⼈开发,Archive的时候都是在另⼀个⼈的电脑上Archive的,所以我的电脑⾥根本没有对应的.xcarchive⽂件。所以我在我电脑上⽤友盟的分析⼯具分析是时候是监测不出来错误的。
2.第三⽅⼩⼯具.dsYM分析
或者⾃⼰到.xcarchive⽂件和错误内存地址(友盟错误详情⾥标绿⾊的为错误内存地址)。然后通过⼀个⼩应⽤来分析出
对应的函数。应⽤下载地址,具体可参考⽂章dSYM ⽂件分析⼯具
注意拿来分析的xcarchive名字不要有空格或特殊字符,直接⽤最简单的数字就好了
下图是我友盟⾥的错误信息,可以分析的内存地址就是标绿的地⽅,图中zhefengle就是你的app名,这部分后⾯的地址就是可以解析符号化的地址:
image
下图是分析⼯具分析上⾯的错误内存地址:
image
3.命令⾏⼯具symbolicatecrash
symbolicatecrash是xcode的⼀个符号化crash log的命令⾏⼯具。使⽤⽅法也就是导出.crash⽂件(crash log)和到.dsYM⽂件,然后进⾏分析。
如何使⽤查看[iOS]使⽤symbolicatecrash分析crash⽂件
4.还有命令⾏⼯具atos
如果你有多个“.ipa”⽂件,多个".dSYMB"⽂件,你并不太确定到底“dSYM”⽂件对应哪个".ipa"⽂件,那么,这个⽅法就⾮常适合你。
特别当你的应⽤发布到多个渠道的时候,你需要对不同渠道的crash⽂件,写⼀个⾃动化的分析脚本的时候,这个⽅法就极其有⽤。
简单使⽤⽅法命令⾏⼯具atos
1.1.3.奔溃⽇志分析
参考iOS应⽤崩溃⽇志分析⾥⾯有很详细的分析介绍。
image
以上是⼀个完整的崩溃⽇志。其实友盟错误详情⾥的就是上图的第4部分。
如何得到崩溃⽇志
xcode怎么打开
1.把设备连上电脑,得到⾃⼰设备的崩溃⽇志
崩溃⽇志可以从xcode⾥打开Devices看到对应⼿机的⼀些奔溃信息。点击下图的View Device Logs就能看到崩溃⽇志。
image
2.使⽤第三⽅崩溃管理⼯具
我暂时只使⽤过友盟,友盟⾥⾯有错误分析,就是截取的崩溃⽇志。
3.⾃⼰截取崩溃⽇志
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论