iOS 使用symbolicatecrash工具进行符号化

本文介绍如何使用Xcode自带的symbolicatecrash工具解析crash日志,并详细解释了如何获取crash日志及.dSYM文件中的UUID,确保二者匹配以完成正确的日志解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

symbolicatecrash 是 Xcode 自带的 crash 日志分析工具,我们可以通过下列命令找到它:

find /Applications/Xcode.app -name symbolicatecrash -type f

执行完后,会返回几个路径,我们用:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
什么是UUID?

每一个可执行程序都有一个build UUID来唯一标识。Crash日志包含发生crash的这个应用的build UUID。

如何获得crash的UUID?

执行命令:

grep --after-context=2 "Binary Images:" *crash

结果:

appName.crash:Binary Images:
appName.crash-0x104bb0000 - 0x10796bfff appName arm64  <084d35c2e0ec33179e85e6ca386fbcef> /var/containers/Bundle/Application/0839BD73-3BE0-4408-B975-42A027EE33B0/appName.app/appName
appName.crash-0x109288000 - 0x1092c3fff dyld arm64  <b15e536a710732dabfafece44c5685e4> /usr/lib/dyld

上面的084d35c2e0ec33179e85e6ca386fbcef就是crash的UUID。

如何获得.dSYM的UUID?

执行命令:

dwarfdump --uuid appName.app.dSYM

结果:

UUID: 8ACA24B6-CAA0-37AC-A1DA-60762227A5CA (armv7) appName.app.dSYM/Contents/Resources/DWARF/appName
UUID: 084D35C2-E0EC-3317-9E85-E6CA386FBCEF (arm64) appName.app.dSYM/Contents/Resources/DWARF/appName
如何获得.app的UUID?

执行命令:

dwarfdump --uuid appName.app/appName

结果:

UUID: 8ACA24B6-CAA0-37AC-A1DA-60762227A5CA (armv7) appName.app/appName
UUID: 084D35C2-E0EC-3317-9E85-E6CA386FBCEF (arm64) appName.app/appName

由上可以看出:这3个文件的UUID是相同的,也就是匹配的,因此可以正确解析。

开始解析

在解析之前,需要将".app",".dSYM",".crash"文件放在同一个目录下。打开终端,进入当前目录,输入如下命令:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

然后输入:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log

现在,符号化的crash log就保存在appName.log中了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值