iOS crash崩溃日志符号化方法

一、atos符号化。

atos符号化的关键主要是:找到崩溃日志的UUID,相对地址和绝对地址。这里以百度统计为例(百度官方也有提供手动解析的方法,但是文档不是很详细,我试了没有成功,暂不清楚是哪步搞错了。以下是我结合网上教程总结出来的方法,亲测有效)。

1、分析错误日志。

在百度统计平台找到错误信息,百度已经将UUID和相对地址给我们标记好了。如图,找到UUID、相对地址、绝对地址:

注意:绝对地址要你的app名称后面的才有用,这里我的app名称为WHBJ。

2、找到提交app时使用的.xcarchive文件和.dSYM文件(以下appName为你的项目名称)。

在XCode -> Window -> orgnizer打开archive界面,找到对应的archive包,右键 -> show in finder -> 显示包内容,找到dSYMs文件,里面可能包含好几个.dSYM文件,其中一个名为appName.app.dSYM,其它均为UUID.dSYM,找到UUID为B472A07C-A09E-3798-98B1-FF137B3D0CF5的.dSYM文件,显示包内容 -> Contents -> Resources -> DWARF,找到appName文件。

3、终端查看详细日志信息。

打开终端,输入xcrun atos -arch arm64 -o appName文件路径 -l 相对路径 绝对路径

回车就可以查看详细信息了,如下图:

运行结果:-[YLfilterView updateAddress] (in WHBJ) (YLfilterView.m:334),含类名,方法名和行数。

4、注意事项。

如果找不到对应UUID的文件,则在终端 cd 到dSYMs文件夹,输入dwarfdump --uuid AppName.app.dSYM 查看AppName.app.dSYM的UUID是否与百度统计一致,一致则用这个文件解析,解析方法同上。

代码收集的崩溃信息没有直接显示相对地址信息,需要自己去计算。如图:

 系统收集崩溃信息中也有直接显示UUID,相对路径和绝对路径。如图: 

 

系统日志的查看方式有如下三种:

  1. Xcode -> Window -> Organize -> Crashes中查看。
  2. Xcode -> Window -> Device and Simulators -> 选中设备 -> View Device Logs。
  3. 用户手机设置 -> 隐私 -> 分析与改进 -> 分析数据里查看。

 二symbolicatecrash符号化(iOS14及以下可用)。

首先我们需要找到symbolicatecrash文件:

// 该文件一般在该路径下
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

// 如果在上面路径找不到的话可以通过命令进行查找。
find /Applications/Xcode.app -name symbolicatecrash -type f

将symbolicatecrash文件、dsym文件、crash文件分别复制到一个文件夹下面。然后cd到新建的文件夹内,使用命令进行符号化,如:

// cd到新建的文件夹内
cd xxx

// 使用命令进行符号化
./symbolicatecrash [crash文件或ips文件] [dSYM文件] > [符号化后的新文件名称.crash]

// 例如
./symbolicatecrash ErrorTest.crash ErrorTest.app.dSYM > newCrash.crash

如果执行命令报错:

Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 75.

// 需要设置环境变量
export DEVELOPER_DIR="/Applications/XCode.App/Contents/Developer"
No crash report version in [文件名].crash at ./symbolicatecrash line 1371.

// 该崩溃信息可能需要使用 CrashSymbolicator.py 进行解析

CrashSymbolicator.py符号化(iOS15及以上可用)。

该方式与symbolicatecrash方式类似,首先需要找到CrashSymbolicator.py文件:

# 该文件一般在该路径下
/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py

# 如果在上面路径找不到的话可以通过命令进行查找。
find /Applications/Xcode.app -name CrashSymbolicator -type f

在找到该文件后不要将它copy到其他文件夹内,否则会出现找不到头文件的问题。

# 执行命令
python3 [CrashSymbolicator.py文件路径] -d [dSYM文件路径] -o [符号化后的新文件名称.ips] -p [崩溃信息ips文件路径]

# 例如
python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py -d /Users/kenan/Desktop/15.0.2/ErrorDemo.app.dSYM -o newCrash.ips -p /Users/kenan/Desktop/15.0.2/ErrorDemo.ips

参考:

1、iOS线上崩溃追踪​​​​​​​。

2、iOS 崩溃日志符号化​​​​​​​。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值