1. 程式人生 > >記錄還原crash log過程

記錄還原crash log過程

第一階段

####第一步、找到symbolicatecrash檔案(可以理解為還原工具)
1.路徑為/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
這裡寫圖片描述
2.如果用1的路徑找不到,可以在終端輸入find /Applications/Xcode.app -name symbolicatecrash -type f或者sudo find / -name "symbolicatecrash"找到所有Xcode版本下的symbolicatecrash

####第二步、找到.dSYM檔案(符號表,用來還原crash log為我們看得懂的文字)
1.在工程配置的 Build Settings -> Build Options -> Debug Information Format一欄中選擇配置為"DWARF with dSYM File"
2.假設在模擬器debug,在/Users/君の名/Library/Developer/Xcode/DerivedData/君のApp/Build/Products/Debug-iphonesimulator/君のApp.app.dSYM 可以找到

####第三步、找到應用程式檔案

  1. (appName.app檔案,把IPA檔案字尾改為zip,然後解壓,Payload目錄下的appName.app檔案), 這裡的appName是你的應用程式的名稱。

####第四步、找到crash報告
1.Xcode->Device->選擇你的手機->根據時間點找到crash log檔案->右鍵匯出

這裡寫圖片描述

第二階段

首先,將symbolicatecrash拷到系統目錄下:
$ sudo cp /xx/xx/xx/symbolicatecrash /usr/local/bin

(……媽蛋我這裡拷失敗了,一直提示沒有這個目錄,找不到解決方案,嘗試Plan B=。=)

命令使用crash檔案,應用的dSYMcrash檔案中崩潰地址對應的方法符號表, 在處理之前,請依然將“.app“, “.dSYM”和 ".crash"檔案放到同一個目錄下(同時命令列也切換過去),然後執行以下命令:

$ export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

$ ./symbolicatecrash Test.crash Test.app.dSYM/ > crash.log

##Plan B
在終端輸入(切換到四個檔案目錄下先)
$ atos -o Test.app.dSYM/Contents/Resources/DWARF/Test -l 0x1000e8000 0x100ff6770 0x10170ffdc 0x10170bec0


(命令結構為atos [-o AppName.app/AppName] [-l loadAddress] [-arch architecture] //atos命令使用指定模組(-o引數) 模組載入地址(-l引數) 函式棧地址來解析出符號)
這裡寫圖片描述
先輸紫色的,然後輸入藍色的,藍色的可以輸一個也可以輸多個(空格隔開)

然後就能看到還原。(看到這一幕會落淚的,不貼圖,自己去體會)