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
文件包含有其它文件