iOS crash dSYM
2016-04-15 13:01
786 查看
前段时间,项目重构完成,模块添加完毕,然后欣喜的准备上线。然后。就出现了下图的情景。
![](https://img-blog.csdn.net/20160415112255175?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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,类似于这种样子的东西
![](https://img-blog.csdn.net/20160415113105457?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然而。并不能看的懂。。。(本人菜鸟)
然后上网上查询 发现这个东西 是手机搜集的崩溃LOG信息
本地crashLog获取方法:
1.手机连接Mac
2.Xcode中 command+shift+2 ,选择对应的手机。 “ViewDeviceLog”. 就可以看到,如果有需要,可以自行导出
这是能拿到崩溃设备的前提下
但是,如果app上线之后用户安装了之后又产生的崩溃怎么才能知道呢。
这里可以,搜集崩溃信息
使用友盟、云测、百度等第三方崩溃统计工具。
自己实现应用内崩溃收集,并上传服务器。
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
返回结果应该是
如果不是,则需要使用下面命令设置一下导出的环境变量
使用命令解析Crash文件,*号指的是具体的文件名
./symbolicatecrash ./xxxx.crash ./*.app.dSYM > symbol.crash
这样,你就会在crashLog文件夹里发现一个 symbol.crash的文件,重新打开。你就会发现,符号化crash文档就完成了。我们就可以成功定位到问题所在了。
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文档就完成了。我们就可以成功定位到问题所在了。
相关文章推荐
- 神器SystemTap
- Python 七步捉虫法
- Lua编程示例(一):select、debug、可变参数、table操作、error
- C#中的两种debug方法介绍
- 用Ruby实现一个单元测试框架的教程
- js调试工具 Javascript Debug Toolkit 2.0.0版本发布
- php debug 安装技巧
- Lua中的异常处理pcall、xpcall、debug使用实例
- 在Python编程过程中用单元测试法调试代码的介绍
- Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名
- 如何使用lldb/gdb调试Nim程序
- Node.js 学习笔记之一
- Openstack Murano(Kilo) 网络排错
- 如何利用Object Browser图形化工具提高Oracle开发工作效率(二)对象创建管理篇
- 调试的艺术
- 在Eclipse里调试Vert.X
- node 调试
- 用Android Sutdio调试NDK
- zg手册 之 scrapy 开发(7)-- 爬虫调试