iOS crash dSYM

来源:互联网 发布:淘宝网李锦记生抽价格 编辑:程序博客网 时间:2024/06/05 08:21

前段时间,项目重构完成,模块添加完毕,然后欣喜的准备上线。然后。就出现了下图的情景。


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文档就完成了。我们就可以成功定位到问题所在了。


1 0
原创粉丝点击