您现在的位置是:网站首页> 内容页

脚本处理iOS的Crash日志

  • 齐发app客户端下载
  • 2019-03-04
  • 299人已阅读
简介背景当我们打包app时,可以选择生成对应的符号表,其保存16进制函数地址映射信息,通过给定的函数起始地址和偏移量,可以对应函数具体信息以供分析。所以我们拿到测试给的闪退日志(.cr

背景

当我们打包app时,可以选择生成对应的符号表,其保存 16 进制函数地址映射信息,通过给定的函数起始地址和偏移量,可以对应函数具体信息以供分析。

所以我们拿到测试给的闪退日志(.crash)时,需要找到打包时对应生成的符号表(.dSYM)作为钥匙解析。具体分为下面几个步骤

    dwarfdump --uuid 命令获取 .dSYMuuid打开 .crash 文件,在特定位置找到 uuid根据 arm 版本比对两者是否一致

    Xcode 目录下寻找 symbolicatecrash 工具

    不同版本文件路径不同,具体版本请谷歌。Xcode9路径是/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/

    设置终端环境变量

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

    使用 symbolicatecrash 工具解析日志symbolicatecrash .crash .dsym > a.out

虽然过程不复杂,但是每次都需要手动执行一次检查与命令,过于繁琐,所以决定用脚本化提高效率。___

步骤实现

输入Crash日志

#要求输入crash文件路径inputFile "Please Input Crash File" "crash"crashPath=$filePath

由于需要输入两种不同后缀的文件路径,且都需要检查,因此统一定义一个方法。

#定义全局变量filePath=#输入文件路径inputFile() { readSuccess=false #首先清空变量值 filePath= while [ $readSuccess = false ] do echo $1 #读取到变量中 read -a filePath if [[ ! -e $filePath || ${filePath##*.} != $2 ]] then echo "Input file is not ."$2 else readSuccess=true fi done}

文章评论

Top