iOS 使用Xcode自帶工具symbolicatecrash解析Crash文件
- 2019 年 12 月 23 日
- 筆記
每次遇到閃退資訊的時候都要敲一遍命令,所以趁現在寫個腳本來解析閃退資訊,需要的資訊有文件有:
dSYM文件
首先通過Xcode的菜單選項Window->Organizer
拿到.xcarchive
文件。通過右鍵顯示包內容可以看到一個dSYMs
文件夾,.dSYM
文件就在這個文件夾下。如果有多個dSYM
文件,只選主工程的dSYM
文件就行,小組件那些文件不用。
symbolicatecrash工具
腳本裡面我已經自動找到此工具的路徑了,直接用就行
crash文件
獲取crash
文件有很多種方法,其中比較常用的有:
- 通過
Xcode->Window->Devices and Simulators->View Device Logs
獲取到。 - 通過
Xcode->Window->Organizer->Crashes
下載閃退文件
複製下面的腳本,隨便命個名字CrashSymbolic.sh
,然後和上面的dSYM和crash兩個文件一起放進同一個文件夾,打開終端進入那個文件夾輸入:
sh /Users/mac/Documents/crash/CrashSymbolic.sh
然後就會生成解析好的symbol.crash
CrashSymbolic.sh
#!/bin/bash export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer echo "----開始 第一個參數是crash路徑 -----" symbolToolPath="./symbolicatecrash" crashPath="" dSYMPath="" if [ ! -f "$symbolToolPath" ] then echo "文件為特殊文件" symbolToolPath="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash" echo "symbolicatecrash工具的路徑是為:"$symbolToolPath if [ -f "$symbolToolPath" ] then echo "symbolicatecrash工具存在(文件為普通文件)" else echo "無法找到symbolicatecrash工具" fi fi function findFile(){ crashPath=$(find . -name "*.crash") } if [ -n "$1" ] then crashPath=$1 echo "已傳入crash文件路徑:$crashPath" else findFile echo "未傳入crash文件路徑,搜索同級目錄下crash文件" fi if [ ! -f "$crashPath" ] then echo "搜索失敗,無法找到crash文件" exit fi dSYMPath=$(find . -name "*.dSYM" -print) echo "找到的符號表路徑:$dSYMPath" if [ ! -d $dSYMPath ] then echo "無法找到符號表dSYM文件" exit fi # ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash $symbolToolPath $crashPath $dSYMPath > symbol.crash
問題一:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
解決方法: 終端執行下面的命令設置環境變數。
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
問題二:如果發現 warning: unsupported file type:
錯誤 看看是不是因為有文件或者目錄的名稱中包含空格,或者dSYM
文件包含有其它文件