您的位置:首页 > 移动开发 > IOS开发

iOS crash dSYM

2016-04-15 13:01 786 查看
前段时间,项目重构完成,模块添加完毕,然后欣喜的准备上线。然后。就出现了下图的情景。



app只支持iPhone,不支持iPad,然后,悲剧原因都会有一个2.10

iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution(iPhone应用必须可以无条件运行在iPad上,支持普通iPhone分辨率和2倍iPhone
3GS分辨率。)

在iPad上运行崩溃。。

然而,由于本人没有iPad真机,所以在模拟器上调试,鼠标都点碎了,然而,还是找不到问题。。

只想求我心里阴影面积。。。

跟苹果工程师屡次交涉,甚至发邮件说我app不支持iPad,让其不要使用iPad测试,然而,并没有什么卵用。。

仍然悲剧。。

然后,悲剧邮件里边都会有crash Log,类似于这种样子的东西



然而。并不能看的懂。。。(本人菜鸟)

然后上网上查询 发现这个东西 是手机搜集的崩溃LOG信息

本地crashLog获取方法:

1.手机连接Mac

2.Xcode中 command+shift+2 ,选择对应的手机。 “ViewDeviceLog”. 就可以看到,如果有需要,可以自行导出

这是能拿到崩溃设备的前提下

但是,如果app上线之后用户安装了之后又产生的崩溃怎么才能知道呢。

这里可以,搜集崩溃信息

崩溃信息.crash 获取方式

下面列举一些我们常用的崩溃分析方式:

使用友盟、云测、百度等第三方崩溃统计工具。
自己实现应用内崩溃收集,并上传服务器。
Xcode-Devices中直接查看某个设备的崩溃信息。
使用苹果提供的Crash崩溃收集服务。
推荐第一种,使用第三方的统计SDK,集成方便,使用简单(以前项目中集成过友盟的统计)

然后这里不再赘述上面描述的情景,主要针对打包提交之后反馈回来的崩溃信息的解析

开始今天的主角:dSYM

不知道大家有没有注意过,在使用Xcode打包上传的时候,都会对应的生成一个xxx.app.dSYM文件 (xxx指项目名)

大家一定切记保存好这些文件, 以备以后通过.crash文件 来符号化 找到崩溃的代码行数

所以我们需要以下三个文件。

1>symbolicatecrash

2>xxx.crash

3>xxx.app.dSYM

note:确保文件的UUID相同,这样才能符号化解析出来。否则不能解析

.dSYM的取得
1.Xcode — organizer — Archive 
2.选择相应版本,右键,showInFinder
3.显示包内容。
4.里边有个dSYMs文件夹,选择xxx.app.dSYM

或者Finder内前往路径
~/Library/Developer/Xcode/Archives

symbolicatecrash取得

Xcode自带的有symbolicatecrash工具,可以符号化 .crash 文件的崩溃信息,定位问题代码。

关于symbolicatecrash 的路径(以Xcode7.3为例,别的Xcode版本路径不同,请自行百度Google)。

打开终端。输入下面路径可以找到。

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash 

找到之后,桌面创建一个文件夹crashLog, copy symbolicatecrash ,crash文件,dSYM文件到桌面文件夹

终端命令:

cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/xxx/Desktop/crashLog/  

(xxx指的是你Mac的名称)

然后cd到桌面crash文件夹

cd Desktop/

cd crashLog/

tips:

查看一下环境变量

xcode-select -print-path
返回结果应该是

/Applications/Xcode.app/Contents/Developer/

如果不是,则需要使用下面命令设置一下导出的环境变量

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

使用命令解析Crash文件,*号指的是具体的文件名

./symbolicatecrash ./xxxx.crash ./*.app.dSYM > symbol.crash

这样,你就会在crashLog文件夹里发现一个 symbol.crash的文件,重新打开。你就会发现,符号化crash文档就完成了。我们就可以成功定位到问题所在了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dSYM debug