我们app发布之后一般拿到线上的崩溃日志,线下根据崩溃日志来进行修改代码。
但有时我们抓取的崩溃日志有些具体定位不到哪个文件,哪行,这个时候利用dsym文件结合DSYMTools分析工具,可以定位到具体代码位置
1.错误的日志(无法直接定位问题位置)

我们定位问题的话,主要看上图标出来的5,6,7,8,9行。其中:
1和3:A05_iPhone 是App的名字
2:0x0000000100ac75d0 16进制地址代表崩溃的错误地址
4:603600十进制 偏移量
下面我们利用DSYMTools来进行分析
DSYMTools工具下载链接

- dsym文件的udid:
打开终端输入xcrun dwarfdump --uuid dsym文件路径
2)错误信息的内存地址:0x0000000100ac7b34

3)Slide Address = (((错误信息的内存地址:0x0000000100ac7b34 ) 转为10进制) -
(后面的偏移量 604980)转为16进制)
注意点:
错误信息的内存地址:0x0000000100ac7b34转为10进制时需要去掉0x字符,开头的0也可以去掉(0x是16进制的代表符)
0x0000000100ac7b34(16)= 43062
使用dsym文件与DSYMTools精确定位iOS线上崩溃问题

当iOS应用出现线上崩溃,仅靠崩溃日志难以定位时,可以借助dsym文件和DSYMTools工具进行分析。通过获取dsym的udid,转换错误内存地址并减去偏移量,可以找到对应代码位置,从而解决崩溃问题。在案例中,错误发生在`hasGrabRedEnvelopeViewWithCurrentDay:currentHour:`方法。
最低0.47元/天 解锁文章
892

被折叠的 条评论
为什么被折叠?



