iOS Crash: dwarfdump 检查 UUID

紧接着博客 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 的其他用法, 请关注后续博客.

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



©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页