IOS程式在真機運行程式出現crash狀況時,機器會自動產生log檔案,它包含了在程式crash之前的運行邏輯,分析carsh檔案,有效解決程式在真機上的問題,保證程式良好的穩定性,但是這個crash檔案多數是顯示出現問題的地址和一些系統的訊息,無法查看程式中對應的崩潰地點,以下文章幫你解決這個問題。
分析崩潰原因,需要三個東西,第一,crash檔案,第二,symbolicatecrash,第三,dysm和app檔案
0. 在案頭建立一個臨時檔案夾,如crash
1. 首先要從裝置中匯出crash檔案,最簡單直接的辦法是裝置串連到mac上,開啟xcode的organizer,然後選擇其頂端選中devices,在左邊的列表裡,就能顯示出當前串連的裝置資訊,選擇當前裝置下的device logs,等待片刻,中間的列表裡會出現很多panic的資訊,按照時間排序可以找到最近崩潰的crash,然後右鍵匯出此檔案.檔案名稱自動儲存為.crash檔案,形如: xxx_2013-08-15-200743_-iPad.crash, 將這個檔案拷入第一步建立的臨時檔案夾備用
2. symbolicatecrash是xcode內建的工具,為了方便調用,可以做一個捷徑,方便在任意路徑下調用
首先在termail下,輸入find /Applications/Xcode.app -name symbolicatecrash -type f,用來尋找symbolicatecrash的真實位置,
一般情況下,會返回如下路徑
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
下一步建立捷徑
sudo ln -s "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash" /usr/local/bin/symbolicatecrash
3.dysm檔案存在於最後發包的機器上,使用開啟xcode的organizer,選擇頂部的archives,看到最後的發包記錄,選擇distribute儲存為相應的archive檔案,查看包內容,裡面有我們需要的.dSYM檔案
app檔案用剛才同樣的方法,dictribute儲存為ipa檔案,把檔案名稱副檔名改為zip,解壓後可以得到最後的app檔案。將這兩個檔案拷入第一步建立的臨時檔案夾備用
萬事俱備,只差最後一步,termail下進入第一步建立的臨時檔案夾,
使用命令 symbolicatecrash xxxx.crash xxxx.dsym > crash.text 將最後分析出來的檔案儲存在crash.text檔案中
形如 symbolicatecrash xxx_2013-08-15-200743_iPad.crash xxxx.app.dSYM >crash.text
注意,一般情況下,第一次使用symbolicatecrash會產生一個error,如下的錯誤資訊
Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53.
解決辦法是輸入export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer