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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容