原文地址
iOS批量分析并統(tǒng)計(jì)Crash日志atos atosl symbolicate
需求及可行性分析
- 在Linux下直接用atosl工具符號(hào)化crash日志;
- 在Mac下,從服務(wù)端批量拉取crash日志文件,對(duì)crash做符號(hào)化,并提取里面字段插入數(shù)據(jù)庫(kù),供統(tǒng)計(jì)展示使用。需要用腳本定時(shí)自動(dòng)化去跑。
分析:
針對(duì)第一種在Linux下分析,這種難度較高,atosl是多年前開(kāi)源的一個(gè)工具,現(xiàn)在已不維護(hù),經(jīng)過(guò)修改后,只能解出部分arm64日志文件,修改后的atosl,依然不能正常工作,運(yùn)行性能也不高,所以放棄;
第二種解決方案中,Mac下對(duì)符號(hào)化支持比較好,atos或者symbolicate符號(hào)化工具,可行性較高。
使用工具
采用SYM工具,用swift編寫的mac程序.
執(zhí)行方案
采用如下流程:
Mac下符號(hào)化并統(tǒng)計(jì)圖解
在SYM程序中,已把信息提取出來(lái),并把每一行的數(shù)據(jù)以tab分割,結(jié)尾處以回車分割,插入到文件
~/Documents/Crash/sql.txt
,這樣文件中,每一行為數(shù)據(jù)庫(kù)中的每一條數(shù)據(jù)。
數(shù)據(jù)庫(kù)
安裝好數(shù)據(jù)庫(kù),建好數(shù)據(jù)庫(kù)名(crash),表名(oaim)。
在db.sh腳本中做從文件中讀取數(shù)據(jù),插入到數(shù)據(jù)中的操作:
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
# 打開(kāi)SYM打包好的Mac app
open ~/Documents/soft/SYM.app
# 打開(kāi)后自動(dòng)符號(hào)化特定目錄下的crash文件,根據(jù)估算,這里寫了個(gè)40秒
sleep 40
# 40秒后,關(guān)閉app
osascript -e 'quit app "SYM"'
echo "save sql.txt finished"
# 執(zhí)行存儲(chǔ)到數(shù)據(jù)庫(kù)的腳本
. ~/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