原文地址
iOS批量分析并统计Crash日志atos atosl symbolicate
需求及可行性分析
- 在Linux下直接用atosl工具符号化crash日志;
- 在Mac下,从服务端批量拉取crash日志文件,对crash做符号化,并提取里面字段插入数据库,供统计展示使用。需要用脚本定时自动化去跑。
分析:
针对第一种在Linux下分析,这种难度较高,atosl是多年前开源的一个工具,现在已不维护,经过修改后,只能解出部分arm64日志文件,修改后的atosl,依然不能正常工作,运行性能也不高,所以放弃;
第二种解决方案中,Mac下对符号化支持比较好,atos或者symbolicate符号化工具,可行性较高。
使用工具
采用SYM工具,用swift编写的mac程序.
执行方案
采用如下流程:
在SYM程序中,已把信息提取出来,并把每一行的数据以tab分割,结尾处以回车分割,插入到文件
~/Documents/Crash/sql.txt
,这样文件中,每一行为数据库中的每一条数据。
数据库
安装好数据库,建好数据库名(crash),表名(oaim)。
在db.sh脚本中做从文件中读取数据,插入到数据中的操作:
mysql --host=localhost --user=youusername --password=yourpassword crash << EOF
load data local infile '~/Documents/Crash/sql.txt' into table oaim columns terminated by '\t';
# insert into oaim_st(identifier, time,title, description) values ('iidd13434','2017-09-12', 'tdfdfdfdfdfdfdfdfesttewfsdfdf');
EOF
第三行为单行插入,已注释掉。
run script
在crash.sh中,这样去写:
#!/bin/bash
# 打开SYM打包好的Mac app
open ~/Documents/soft/SYM.app
# 打开后自动符号化特定目录下的crash文件,根据估算,这里写了个40秒
sleep 40
# 40秒后,关闭app
osascript -e 'quit app "SYM"'
echo "save sql.txt finished"
# 执行存储到数据库的脚本
. ~/test/db.sh
sleep 10
echo "load sql.txt to mysql finished!"
# 清理文件
rm -rf /Users/Shawn/Documents/Crash/sql.txt
echo "clean sql.txt" finished