前言
因为自己菜,所以在分析iOS Crash日志上走了很多弯路。 个人觉得这个工作并不存在太大的技术含量,所以我就想着能不能实现自动化呢? 于是我便开始研究起脚本,紧接着写了一个自动化分析iOS崩溃日志的脚本。这是第一次写脚本,还是有点小小的成就感的。
使用Xcode自带的symbolicatecrash分析工具
本文所说的自动化就是使用该工具进行分析的,对于这个工具的具体使用方法可以参考该文章。
总的来说,其实自己写的脚本比较简单,只是将上述文章中说到的命令进行了统一而已。
使用方式
- 首先将该脚本、dSYM文件、所有的crash文件放到一个文件夹下。
- 在终端下进入该目录,并执行./SymbolicCrash.sh命令并正确输入你打包使用的Xcode名称,按回车键开始解析。
解析后的文件夹内容:
对于多出的symbolicatecrash可执行终端程序,大家不必理会,这就是上面说到的Xcode自带的分析工具,我只是将它拷贝过来完成任务罢了。另外,可能会出现警告,但是大家可以忽略(因为我还没弄清楚为啥呢)。
解析结果部分对比
需要注意的是,一个Crash文件对应一个log文件。
脚本代码
#!/bin/sh
# 首先判断是否有相关的文件
dSYMPath=`find . -iname "*.dSYM"`
XcodeName=""
# 获取Xcode的名称
function getXcodeName() {
# 获取Xcode名
echo "请输入Xcode的名称:"
read ANS
XcodeName="$ANS"
if [ -z "$XcodeName" ]; then
getXcodeName
else
symbolicatecrash
fi
}
# 获取Xcode的symbolicatecrash脚本
function symbolicatecrash() {
# 拷贝Xcode自带的symbolicatecrash脚本到当前目录
cp /Applications/${XcodeName}.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash .
analyze
}
# 解析
function analyze() {
crashFiles=`find . -iname "*.crash"`
export DEVELOPER_DIR="/Applications/${XcodeName}.app/Contents/Developer"
for fileName in $crashFiles; do
{
./symbolicatecrash $fileName $dsymPath > $fileName.log
}
done
}
function beginShell() {
if [ -z "$dSYMPath" ]; then
echo "没有找到dSYM文件!"
else
getXcodeName
fi
}
beginShell