iOS Crash: dwarfdump 检查 UUID

本文介绍如何通过dsym文件解决iOS应用的Crash问题。重点讲解了dsym文件的作用及其与应用UUID的一致性要求,并演示了如何利用dwarfdump工具查找和验证dsym文件。

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

紧接着博客 iOS Crash: symbolicatecrash 工具 继续关于 iOS Crash 的问题.


我们知道, 查找 crash 问题的关键是要有符号表即 dsym 文件.

并且, app 的 UUID 和 dsym 文件的 UUID 必须要保持一致, 才有意义.

dsym 文件其实也没那么神秘, 他就是包含了我们的调试信息, 全名是debug symbols.

使用 GCC 编译代码的同学比较清楚, 在GCC 编译代码, 加入 -g 选项, 就会加入调试信息.

 一旦程序出了问题, 可以方便定位.

这个就类似于 debug symbols.只不过苹果使用的是 LLVM 编译器.

关于这两个编译器, 大家可以咨询 google 老师, 还蛮有意思的.

~~不好意思, 跑题了.


还是使用 dsds 这个项目的 crash 来举例子.

凡事举个例子, 更容易让别人接受.


假设, crash_file 目录下面只有 dsds.app


这个时候, 你想找到对应的 dsym 文件, 应该怎么做呢?

很简单, 两个步骤:

1. 使用 dwarfdump 查看当前的 app 的 UUID.



2. 根据 UUID 查找 dsym 文件位置.

mdfind "com_apple_xcode_dsym_uuids == DD7A6D50-0486-39A1-9E0C-73439450360A"

当然, 前提是你的本机的确有这个文件存在.

可以看到查找结果



复制该文件到 crash_file 目录


可以检验该文件的 UUID, 同理使用 dwarfdump



dwarfdump 也可以根据 dsym 文件, 找到对应的 crash 位置.

dwarfdump --arch armv7 dsds.app.dSYM --lookup 地址(如0x12345) | grep 'Line table'

不过使用比较麻烦. 这里不再赘述.

关于 dwarfdump 的其他用法, 请关注后续博客.

当然, 你也可以查看其帮助.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值