美文网首页
iOS crash ips文件解析

iOS crash ips文件解析

作者: name007 | 来源:发表于2020-07-13 10:44 被阅读0次
#!/bin/sh

#参数
symbolToolPath="./symbolicatecrash"
#
show_usage="args: [-c crashPath or ipsPath, -d dSYMPath]"
echo $show_usage
crashPath=""
dSYMPath=""

while getopts ":c:d:" opt
do
    case $opt in
        c)
        crashPath=$OPTARG
        ;;
        d)
        dSYMPath=$OPTARG
        ;;
        ?)
        echo "Invalid option: -$OPTARG index:$OPTIND"
        exit 1;;
    esac
done

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

if [ ! -f "$symbolToolPath" ]
then
    echo "当前文件件内未找到 symbolicatecrash 工具,尝试使用 Xcode 提供"
    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

# 提取dSYM文件的UUID
dSymUuid=$(dwarfdump --uuid $dSYMPath)
dSymUuid=${dSymUuid:5:37}
dSymUuid=$(echo $dSymUuid|tr [a-z] [A-Z]);

echo "dSYM --uuid $dSymUuid"

crashName=$(echo "${crashPath%.*}");
crashKuoZhan=$(echo "${crashPath#*.}");

if [ -f "$crashPath" ]
then
    if [ $crashKuoZhan == "ips" ];then
    mv $crashPath "$crashName.crash"
    crashPath="$crashName.crash"
    fi
fi

function symbolCrashHeader() {
    #提取闪退日志头部信息
    text=$(grep -n 'slice_uuid=*' $crashPath)
    ipsUuid=${text#*slice_uuid}
    ipsUuid=${ipsUuid:3:36}
    ipsUuid=$(echo $ipsUuid | tr [a-z] [A-Z]);

    echo "crash --uuid $ipsUuid"

    if [[ $dSymUuid != $ipsUuid ]]; then
        echo 'uuid 不一致,无法符号化ips';
        exit 1
    fi
}

symbolCrashHeader

$symbolToolPath $crashPath $dSYMPath > symbol.crash

使用示例

chmod 777 parse_ips.sh
./parse_ips.sh -c xxx.crash -d xxx.dSYM

相关文章

网友评论

      本文标题:iOS crash ips文件解析

      本文链接:https://www.haomeiwen.com/subject/fzfacktx.html