介紹iOS符號表的基礎概念,以及如何找到符號表并上傳。
一、什么是符號表
1. 簡介
符號表(Symbol Table)是編譯器和解釋器中用來存儲源代碼中符號信息的數據結構,符號表元素如下所示:
<起始地址> <結束地址> <函數> [<文件名:行號>]
2. 作用
為了能準確定位Crash發生的代碼位置,崩潰分析使用符號表對Crash堆棧進行解析還原。例如下面的原始堆棧及其還原之后:
原始堆棧
crash_ios_demo 0x0000000102a95d45 0x102a94000 + 7493
還原堆棧
crash_ios_demo 0x100879d45 -[ViewController testCrash:] ViewController.m:29 (in crash_ios_demo)
3. iOS符號表
iOS平臺中,dSYM文件是保存符號表的目標文件,文件名通常為xxx.app.dSYM
,建議每次構建或發布App的時候,備份好dSYM 文件。
重要
在上傳符號表的時候,需要將dSYM文件壓縮成一個zip文件上傳。
二、如何找到符號表
1. XCode查找
一般情況下,XCode項目編譯完dSYM文件跟app文件在同一個目錄下,按以下步驟查找dSYM文件:
1、進入XCode,打開App工程;
2、在項目導航欄找到“Product”項;
3、鼠標右鍵點擊編譯生成的“xxx.app”,點擊“Show in Finder”
4、同目錄的xxx.app.dSYM即為符號表文件
Xcode界面
Finder界面
2. XCode編譯后無dSYM文件
一般情況下,XCode Release編譯默認會生成dSYM文件,而Debug編譯默認不會生成,對應的Xcode配置如下:
Generate Debug Symbols -> Yes
Debug Information Format -> DWARF with dSYM File
3. 找回已發布App的dSYM文件
1、打開Xcode頂部菜單欄->Window->Organizer窗口;
2、找到發布的歸檔包,選擇“Show in Finder”;
3、右鍵選擇定位到的歸檔文件,選擇“顯示包內容”;
4、選擇dSYMs目錄,即可看到App對應的dSYM文件。
4. Crash與dSYM的UUID匹配
崩潰分析在還原Crash堆棧時,需要根據UUID來匹配符號表文件,因此需保證上傳的符號表文件的UUID與Crash對應APP的UUID一致。
重要
崩潰分析Crash的UUID和符號表文件的UUID可能因為字母的大小寫或者連接符“-”而產生差異,不影響其內容一致性。
Crash UUID
符號表文件UUID
通過以下命令查看UUID:
xcrun dwarfdump --uuid <dSYM文件>
三、 如何上傳符號表
詳見 網頁上傳符號表。
四、 FAQ
詳見 符號表 FAQ。
文檔內容是否對您有幫助?