有個項目送出到AppStore後被蘋果打回來了,說程式運作的時候crash了,還給了我們三個crash檔案,但是直接打開檔案的話,我們看到的跟平時在Xcode中debug的時候完全不一樣,debug的時候控制台列印的是一些函數名之類的.但是蘋果給我們的crash檔案裡面的函數名之類的東西都變成16進制的.是以如果我們要想像平時在Xcode中一樣獲得一些有用的資訊,我們就得做一些轉化.
通過查閱官方文檔和上網查閱.這裡介紹利用Xcode隐藏的一個工具symbolicatecrash來完成轉化
官方文檔裡說了,你如果想要完成轉化,那麼你必須同時擁有這幾個檔案:
1. XXX.app
2. XXX.app.dSYM
3. XXX.crash
前兩個檔案是你打包時生成的檔案,是以你要儲存好這兩個檔案,否則,如果到時候蘋果把你應用打回來了,給你crash檔案,你也轉化不了了.
如果你是通過設定run->release,然後直接command+B來生成app檔案正式包的,那麼直接進入項目中product下的app檔案的檔案夾中就能看見這兩個檔案.
如果你是通過archive然後export得到的ipa檔案正式包,那麼直接右擊->打開方式->歸檔使用工具,打開報内容,就能找到這兩個檔案.
第三個檔案就是蘋果給你的crash檔案.在桌面建立一個檔案夾convertCrash把這個三個檔案放到檔案夾中
接下來進入此/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources檔案夾,找到symbolicatecrash這個玩意,拷貝一份,粘貼到convertCrash檔案夾中.現在檔案夾中有四個檔案前三個加symbolicatecrash.
接下來打開指令行,cd到convertCrash檔案夾執行指令
./symbolicatecrash /Users/hhhh/Desktop/convertCrash/XXXX.crash /Users/hhhh/Desktop/convertCrash/XXXX.app.dSYM > test.crash
回車後如果包如下錯誤:“Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 53.”則在目前指令行中直接輸入
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"回車然後再次執行./symbolicatecrash /Users/hhhh/Desktop/convertCrash/XXXX.crash /Users/hhhh/Desktop/convertCrash/XXXX.app.dSYM > test.crash
此時檔案夾中多了一個test.Crash檔案,就是最終得到的檔案