项目使用友盟统计bug,崩溃发生时友盟提供了发生崩溃的内存地址,接下来我们通过内存地址定位问题代码。
1. 找到上传版本的dSYM
dSYM的位置:
Xcode->Organizer->找到发生崩溃的版本(右键)--> Show in Finder,右击Finder中的.xcarchive文件点显示包内容,找到dSYMs目录下的xxx.app.dSYM文件,继续显示包内容,找到Contents目录下的Resources目录下的DWARF目录。
2. 将终端定位到DWARF目录
在命令行输入:cd DWARF目录路径
cd /Users/circusjonathan/Library/Developer/Xcode/Archives/2017-04-27/HEKAI\ 2017-4-27\ 20.51.xcarchive/dSYMs/HEKAI.app.dSYM/Contents/Resources/DWARF
3. 定位问题
通常我们会在友盟的问题统计页面看到类似这样的错误信息
在终端执行以下命令:
atos -arch [项目设置的CPU Type] -o [项目名] [错误发生的内存地址] [项目名] + 255428
CPU Type
可以在Build Setting中查看,友盟的错误信息里面有这个信息,如上图的左下角。CPU Type写错了会定位不到问题。atos -arch arm64 -o HEKAI 0x10003e5c4 HEKAI + 255428
回车就会定位到崩溃的地方上图可以看出,问题定位到了HKScanQRViewController.m文件的177行,发生问题的方法是nextStepEvent:,到此问题就定位好了,然后根据具体情况消除问题。
可视化工具
在网上看到answer-huang开发了一个工具,专门用来快速定位崩溃日志的代码,工具特别好用,使用步骤如下:
1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格)。
2.选中任意一个版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。
3.对比错误给出的UUID和工具界面中给出的UUID是否一致。
4.将错误地址输入工具的文本框中,点击分析。
工具下载链接:http://download.csdn.net/detail/totogo2010/8012367