文档章节

dwarfdump解析线上崩溃日志dSYM文件

奋斗的青春年华
 奋斗的青春年华
发布于 2018/08/22 15:17
字数 966
阅读 322
收藏 0

1、dSYM文件:iOS构建时产生的符号表,它是内存地址与函数名,文件名,行号的映射表;iOS应用crash时也有堆栈,release版的应用,crash时的堆栈信息,全是二进制的地址信息;iOS平台中,dSYM文件是保存符号表的目标文件,文件名通常为:xxx.dSYM(符号表dSYM概念和获得途径资料地址https://developer.umeng.com/docs/66632/detail/71519

2、线上崩溃时采用的dSYM文件: 在xcode7以前 xcode7默认BitCode是关闭的;xcode7以后BitCode默认是开启的;当开启BitCode后,在构建二进制版本ipa文件上传到App Store时,App Store会再次编译上传的二进制版本ipa包,因此,在解析线上崩溃日志时,采用苹果开发者中心上的dSYM文件;当没有开启BitCode时,可以使用本地的xx.app.dSYM的dSYM文件;

 

一、当BitCode没开启时,解析线上崩溃日志方法如下:

使用工具dSYMTools(下载地址:https://github.com/answer-huang/dSYMTools),下载完,运行dSYMTools(注意是一个macos应用),将对应版本的xcarchive文件或则xx.app.dSYM文件拖拽到dSYMTools控制面板就可以了,将崩溃的内存地址输入进去点击分析就会自动分析出可能出错的地方(效果如下);

 

二、当BitCode开启了时,解析线上崩溃日志方法如下:

umeng崩溃日志解析方法:

两种方式:

1、利用错误解析工具umcrashtool 但是该工具不能调试Application received signal SIGSEGV (null)或者数组越界一类的崩溃

2、利用命令dwarfdump(可以调试数组越界等一类问题)

dwarfdump --arch=arm64 --lookup=[崩溃日志上项目对应的某崩溃地址] [dSYM文件的绝对路径]

 

解析步骤如下:

 

当使用umcrashtool工具解析时,步骤如下:

首先将从开发者中心下载下来dSYM文件移动到 ~/Library/Developer/Xcode/. 目录下(通过前往进到对应目录)

 

1、下载 umcrashtool ,以及友盟里对应崩溃日志 xxx.csv,放于同一目录下(结构目录如下)。

2、打开终端,cd到该目录下,执行命令:

./umcrashtool [xxx.csv的绝对路径]

3、若能够分析出来,则终端会打印出代码崩溃点以及行数,并且生成一个错误分析xxx-symbol.csv文件在该目录下

 

当使用命令dwarfdump时,步骤如下:

1、将下载下来的dSYM放到一个目录下(如下):

 

2、打开终端,cd到该目录下,执行命令:

dwarfdump --arch=arm64 --lookup=[崩溃日志上项目对应的某崩溃地址] [dSYM文件的绝对路径]   (机型为64位的)

dwarfdump --arch=armv7 --lookup=[崩溃日志上项目对应的某崩溃地址] [dSYM文件的绝对路径]   (机型为32位的)

dwarfdump --arch=arm7s --lookup=[崩溃日志上项目对应的某崩溃内存地址] [dSYM文件的绝对路径]   (机型为32位的)

3、若能够定位崩溃点,终端则会显示出崩溃的文件名以及行数

 

下面是查看dSYM文件的UUID的方法:

1.查看 xx.app 文件的 UUID,terminal 中输入命令 :

dwarfdump --uuid xx.app/xx (xx代表你的项目名)

2.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中输入命令:

dwarfdump --uuid xx.app.dSYM

下面是崩溃内存地址位置:

 

 

另其他关于线上崩溃处理的方案如下:

没有dSYM文件的:

https://www.cnblogs.com/tianshifu/p/6142937.html

https://www.cnblogs.com/ciml/p/7422872.html

http://www.cocoachina.com/industry/20130725/6677.html

 

 

 

© 著作权归作者所有

奋斗的青春年华
粉丝 1
博文 175
码字总数 108430
作品 0
浦东
私信 提问
手动解析CrashLog之——原理篇

接下来再说说dwarfdump、atos等解析工具是如何从符号表文件中获取到崩溃位置信息的。一切还得从.dSYM符号表文件开始说起。 一、.dSYM文件的生成 符号表文件.dSYM实际上是从Mach-O文件中抽取调...

HeroHY
2018/02/27
0
0
【转】Xcode分析CrashLog的方法

使用dwarfdump检查dSYM和app是否匹配 搞iPhone开发就要不停地发版本,随之而来的就是各种版本的crash log。如果不能好好地管理,那么开发人员很快就会在crash log和版本的海洋里迷失方向。 ...

长平狐
2012/08/13
790
0
dSYM 文件分析工具

dSYM 文件分析工具 来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 bug,因为项目中使用了友盟统计,所以在友盟给出的错误...

法斗斗
2016/01/04
43
0
iOS crash报告分析

相关概念 什么是 dSYM 文件 Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项...

繁梦三千
2017/12/15
0
0
iOS开发Crash堆栈分析(Umeng)

一、先说对单个地址进行分析的方法: 命令行进入包含xxx.app.dSYM的路径,执行下面命令 dwarfdump --arch=arm64 --lookup 0x10051bc2c xxx.app.dSYM (dwarfdump的具体用法和原理,请自行百度...

Feng_999
2016/01/05
638
0

没有更多内容

加载失败,请刷新页面

加载更多

用Python帮你上马,哪里无码打哪里

目录 0 引言 1 环境 2 需求分析 3 代码实现 4 代码全景展示 5 后记 0 引言 所谓的像素图,就是对图像做一个颗粒化的效果,使其产生一种妙不可言的朦胧感。费话不多说,先来看一张效果图。 <c...

上海小胖
27分钟前
1
0
python from import与import as 的含义

from os import makedirs, unlink, sep #从os包中引入 makedirs.unlink,sep类 from os.path import dirname, exists, isdir, splitext 从 os包中的path类中引入 dirmame exists 等方法 impo......

dillonxiao
27分钟前
1
0
【转】URL最大长度问题

今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超长...

ZhangLG
30分钟前
0
0
Segment段

CurrentHashMap和HashMap相比支持并发操作,整个CurrentHashMap是由一个个的Segment组成的,也是就是常说的分段锁 Segment继承了重入锁ReentrantLock来进行加锁, 可以简单的把CurrentHashMa...

周慕云
31分钟前
0
0
JS Date 自定义格式化方法

JS Date 自定义格式化方法 Date 时间对象 快速 自定义格式化 定义方法 // 自定义格式化方法Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, ......

DrChenXX
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部