方法一:
1.xcode 有自帶的symbolicatecrash,可以將.crash文件中的16進制地址轉換成可讀的函數地址。
symbolicatecrash位於:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash(Xcode 4.5)
可以將symbolicatecrash拷貝到便於操作的目錄。
如:將其拷貝到Desktop/iphonedug文件夾中。
2.每一次Build之後會有相應的xxx.app, xxx.app.dSYM文件,.dSYM文件是將Build之後的文件16進制地址對應的函數地址儲存起來之後的文件。
每一個xx.app, xxx.app.dSYM文件都擁有相應的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正確的日誌文件。
查看xx.app文件的uuid的方法,在terminal中輸入命令:dwarfdump --uuid xxx.app/xxx (xxx工程名)
查看xx.app.dSYM文件的uuid的方法,在terminal中輸入命令:dwarfdump --uuid xxx.app.dSYM (xxx工程名)
而.crash的uuid位於,crash日誌中的Binary Images:中的第一行。如:armv7s <13760bde0d073f1eb4d596c3df753f4b>
將對應的xx.app, xx.app.dSYM文件也拷貝到Desktop/iphonedug文件夾中
3.使用symbolicatecrash解析.crash日誌。
在terminal中輸入命令:./symbolicatecrash xxx.crash xxx.app.dSYM > test.log
這樣可以將.crash日誌轉換成test.log,test.log即可讀的函數文件。
輸入上述命令可能會出現Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 53.這個錯誤。
如果出現上述錯誤,輸入命令:export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer,
然後繼續執行./symbolicatecrash xxx.crash xxx.app.dSYM > test.log可以成功
方法二:
使用命令:atos -o xxx.app/xxx -arch armv7 0x38ad42f9 0x38ad42f9 0x38ad42f9(多個16進制地址,使用空格分開)
注意.app, .app.dSYM需要跟日誌程序版本build一致
================== 處理crash ===========================
1. /usr/bin/xcode-select -print-path
2. sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
3. find /Applications/Xcode.app -name symbolicatecrash -type f
4. cd /Applications/Xcode4.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
5 ./symbolicatecrash -o ~/desktop/Dingtone_crashlog.crash ~/desktop/*.crash /project/dingtone/branches/Clientv1_0/IOS_Client/dSYM/