iOS崩潰日誌ips文件解析 一 簡介 測試組的同事在進行穩定性測試時,通常會遇到一些崩潰,然後他們會將這些崩潰日誌(一般是ips格式的文件)反饋給開發進行分析,但是這些ips文件中的內容通常是如下圖這樣的,都是一些十六進位的堆棧地址,如果僅僅根據這些堆棧地址,我們基本無法做任何事情,連最基本的崩潰 ...
一 簡介
測試組的同事在進行穩定性測試時,通常會遇到一些崩潰,然後他們會將這些崩潰日誌(一般是ips格式的文件)反饋給開發進行分析,但是這些ips文件中的內容通常是如下圖這樣的,都是一些十六進位的堆棧地址,如果僅僅根據這些堆棧地址,我們基本無法做任何事情,連最基本的崩潰定位都做不到。那麼,在iOS開發中,還有一些其他的方法可以幫助我們將這些堆棧信息轉化為可視化的日誌文件,在轉化後的可視化日誌文件中,我們可以清晰定位到我們的應用崩潰的位置,如下圖2所示。
這個轉化的過程有一個專業術語,叫符號化,就是講這些堆棧地址轉化為我們可識別的一些類名、方法名等符號信息。
二 解析步驟
所以,如何實現這樣的轉化是一個很重要的問題。網上查了很多資料,現在網上一般說是有兩種方法:
- 命令行解析ips
- 使用Xcode解析ips/crash
2.1 準備工作,獲取.xcarchive文件
我主要採用的是第一種方法利用命令行解析ips,在這種方法中,有一個前提準備工作要做,就是要獲得我們打包時的.xcarchive文件,具體獲取方法是打開xcode,點擊 【window】 --> 【Organizer】,進入到我們打包Archives的管理界面,這個界面有我們之前打的包的所有記錄,選擇測試App對應的App以及打包的版本,單擊選中的Archive選擇 show in Finder,然後將對應的.xcarchive文件拷貝出來,放在桌面或其他自己方便查看的地方。如果不是你負責打包,那麼你需要找到打包負責人拿到對應的.xcarchive文件。
2.2 解析具體步驟
- 新建一個文件夾,名字叫Acrash。
- 拷貝.ips文件放到Acrash中,並將.ips文件尾碼名該為.crash。
- 前往文件夾路徑:【/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash】,找到symbolicatecrash。拷貝symbolicatecrash工具拷貝到Acrash中。具體步驟是打開Finder,【前往】-->【 前往文件夾】,在彈出的對話框中輸入上述地址/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash,點擊【前往】即可定位到對應的symbolicatecrash工具,然後選擇拷貝即可。
- 從xcarchive文件里,右鍵點擊【顯示包內容】,從Products/Applications裡面拷貝.app文件,放到Acrash中。
- 從xcarchive文件里,右鍵點擊【顯示包內容】,拷貝dSYMs文件下的.dSYM文件,放到Acrash中。
至此,Acrash文件中總共有4個文件:.crash文件、symbolicatecrash工具、app文件、.dSYM文件。
6. 打開終端,cd到Acrash文件夾中
7. 輸入命令 ./symbolicatecrash crash文件的絕對路徑 dSYM的絕對路徑 > log.crash ,回車。
【註意1】:log.crash是符號化後的文件名。可以自定義文件名(尾碼一定是.crash哈)。
【註意2】:7步驟之後,終端有可能會報錯Error: Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.. 這時候在終端中再輸入
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer
然後再次運行 7 的命令。應該就能看到Acrash文件夾下,可以發現多了一個文件:log.crash。
OK,整個過程基本就是這樣了,得到最後的log.crash之後,我們就比較方便定位問題所在了。