symbolicatecrash及atos命令

根据 dSYM 文件和 .crash文件,分析崩溃原因
要保证.dSYM 文件的 uuid 和.crash 文件的 uuid 一致,才能分析

crash 文件顶部的 Incident Identifier 是这个文件的 uuid
dwarfdump --uuid Some.app.dSYM 查看 dSYM 文件的 uuid
dwarfdump --uuid Some.app/Some 这是查看 .app 文件的 uuid

先准备符号化的工具:symbolicatecrash文件
使用命令

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

找到symbolicatecrash文件

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

把 symbolicatecrash 文件拷贝到一个方便访问的文件夹下
把 crash 文件和 dSYM 文件也放在同一个文件夹下,这样使用命令行操作时会很方便

对于未符号化和部分符号化的crash 文件,可以使用如下命令进行全符号化(当前处在上面说的文件夹目录下)

./symbolicatecrash Some.crash Some.app.dSYM/ -> Some2.crash

如果报错

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

在命令行下执行以下命令

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

如果本机有crash 文件对应 uuid 的 dSYM 文件(理论上除了废纸篓的路径,都可以,试了几个简单的都可以),那么命令里可以不写dSYM 路径

./symbolicatecrash Some.crash -> Some3.crash

加上-v参数,可以看到符号化的过程,其本质就是用的 atos 命令,一堆 atos

./symbolicatecrash Some.crash -o Some4.crash -v

https://developer.apple.com/library/archive/technotes/tn2151/_index.html

image.png

截一个小片段

image.png

上面生成的 Some2.crash,Some3.crash,Some4.crash 文件,内容都是一样的。

对于符号化个别系统库的调用,需要本机存有对应崩溃手机的系统版本的 Symbols

image.png

以我为例,我的~/Library/Developer/Xcode/iOS DeviceSupport目录下,需要存在 12.4 这个版本的 symbols

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容