Crash我們不得不面對的問題藻肄,但是好多人在遇到Crash的時候都無從下手,很多的時候都是憑著感覺找問題拒担。今天我做了5篇文章來幫助我們更加清晰的認(rèn)清iOS中的Crash
想要了解更詳細(xì)的內(nèi)容可以點擊這里
符號表
符號表是內(nèi)存地址與函數(shù)名谋逻、文件名、行號的映射表桐经。符號表元素如下所示:
<起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號>]
為什么要配置符號表毁兆?
為了能快速并準(zhǔn)確地定位用戶APP發(fā)生Crash的代碼位置,Bugly使用符號表對APP發(fā)生Crash的程序堆棧進(jìn)行解析和還原
dSYM文件
iOS平臺中阴挣,dSYM文件是指具有調(diào)試信息
的目標(biāo)文件气堕,文件名通常為:xxx.app.dSYM
。如下圖所示
為了方便找回Crash對應(yīng)的dSYM文件和還原堆棧畔咧,建議每次構(gòu)建或者發(fā)布APP版本的時候茎芭,備份好dSYM文件
如何定位dSYM文件?
一般情況下誓沸,項目編譯完dSYM文件跟app文件在同一個目錄下梅桩,下面以XCode作為IDE詳細(xì)說明定位dSYM文件。
- 1拜隧、進(jìn)入XCode
- 2宿百、打開工程(已編譯過);
- 3洪添、在左欄找到“Product”項垦页;
- 4、鼠標(biāo)右鍵點擊編譯生成的“xxx.app”干奢;
- 5痊焊、點擊“Show in Finder”;
如果有多個dSYM文件忿峻,可以在使用工具時指定輸入為dSYM文件所在的目錄或者工程目錄
XCode編譯后沒有生成dSYM文件宋光?
XCode Release編譯默認(rèn)會生成dSYM文件,而Debug編譯默認(rèn)不會生成炭菌,對應(yīng)的Xcode配置如下:
XCode -> Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
XCode -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File
開啟Bitcode之后需要注意哪些問題罪佳?
在點Upload to App Store
上傳到App Store服務(wù)器的時候需要聲明符號文件(dSYM文件)的生成:
1、在配置符號表文件之前黑低,需要從App Store中把該版本對應(yīng)的dSYM文件下載回本地赘艳,然后用符號表工具生成和上傳符號表文件
2酌毡、不需要配置自動生成符號表的腳本了,也不要用本地生成的dSYM文件來生成符號表文件蕾管,因為本地編譯生成的dSYM文件的符號表信息都被隱藏了枷踏。如果用本地編譯生成的dSYM文件生成符號表文件并配置到Bugly平臺之后,還原出來的結(jié)果將是類似于“__hiden#XXX”這樣的符號
如何查看dSYM文件的UUID掰曾?
- 1旭蠕、通過命令查看UUID
xcrun dwarfdump --uuid <dSYM文件>
- 2、通過符號表文件查看UUID
符號表文件的UUID與dSYM文件的UUID是一致的旷坦,因此可以通過符號表工具生成的符號表文件來查看dSYM文件的UUID:
生成符號表文件(.zip) ---> 解壓符號表文件(.symbol) ---> 使用文本編輯器打開符號表文件
其中符號表文件的“UUID”信息即Debug SO文件的UUID掏熬,亦是符號表文件的UUID,如果文件較大秒梅,建議使用“Sublime Text”等文本編輯器來打開符號表文件旗芬。
如何找回已發(fā)布到App Store的App對應(yīng)的dSYM文件?
通過Xcode找回
- 1捆蜀、打開 Xcode 頂部菜單欄 -> Window -> Organizer 窗口:
- 2疮丛、打開 Xcode 頂部菜單欄,選擇 Archive 標(biāo)簽:
- 3辆它、找到發(fā)布的歸檔包誊薄,右鍵點擊對應(yīng)歸檔包,選擇Show in Finder操作
- 4锰茉、右鍵選擇定位到的歸檔文件呢蔫,選擇顯示包內(nèi)容操作:
- 5、選擇dSYMs目錄洞辣,目錄內(nèi)即為下載到的 dSYM 文件:
通過iTunes Connect找回
- 1咐刨、登錄iTunes Connect
- 2、進(jìn)入“我的App(My Apps)”的“活動(Activity)”頁面:
- 3扬霜、在“所有構(gòu)件版本(All Builds)”中選擇某一個版本定鸟,點“下載dSYM(Download dSYM)”下載dSYM文件: