一般做項目的時候會碰到一些崩潰的情況。在非調試模式下沒有辦法判斷崩潰在哪里,只能通過崩潰日志來分析,如果崩潰日志在沒有符號化的情況下,都是顯示的一些內存信息,這樣我們就很難找到崩潰的原因。碰到這樣的情況我一般都用Xcode
自己帶的工具來符號化崩潰日志。
準備工具
- Xcode
- dsym文件,應用安裝包,崩潰日志
- 分析工具
symbolicatecrash
- 命令行工具
符號化崩潰日志
- 從設備里面導出崩潰日志
設備連接Xcode
,打開菜單Window->Device
(快捷鍵shift+command+2)選項,選中當前設備,點擊View ``Device Logs
。如下圖所示:
點擊以后會出來當前設備的崩潰日志列表。默然選中的就是This Device
(當前設備的崩潰日志),可以根據Date/Time
找出崩潰的日志,然后在崩潰日志選項右鍵選擇Export Log
導出當前的崩潰日志到指定的文件夾。
- 導出dsym、應用安裝包。
每次Archive成功,都會有對應的Archive文件生成,文件得路徑是/Users/用戶名/Library/Developer/Xcode/Archives/
目錄下。找到對應的文件,打開就會看見對應的Archive文件,右鍵點擊該項目,然后點擊顯示包內容,就會看到對應的文件夾。dSYMs
、Products
這兩個文件夾里面的內容是我們所需要的。分別打開兩個文件夾,找到對應的.dSYM
和.app
文件,把這兩個文件跟上一步導出的崩潰日志放在同一個文件夾中。
- 符號化工具(symbolicatecrash)
本人用的是Xcode8,工具路徑是/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
如果路徑錯誤的話可以嘗試這個路徑:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
找到對應的工具 可以復制一份放到桌面上下次方便使用。
- 打開終端(Terminal)
在終端里面打開步驟2中保存崩潰文件夾的路徑,然后輸入export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
然后處理命令行 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash appName.app appName.crash > appName.log
然后符號化后的文件就在當前的文件夾中。