原文地址
iOS批量分析并統(tǒng)計Crash日志atos atosl symbolicate
需求及可行性分析
- 在Linux下直接用atosl工具符號化crash日志樟结;
- 在Mac下怀浆,從服務(wù)端批量拉取crash日志文件妒茬,對crash做符號化持隧,并提取里面字段插入數(shù)據(jù)庫洪规,供統(tǒng)計展示使用颗搂。需要用腳本定時自動化去跑雨膨。
分析:
針對第一種在Linux下分析,這種難度較高扔茅,atosl是多年前開源的一個工具已旧,現(xiàn)在已不維護,經(jīng)過修改后召娜,只能解出部分arm64日志文件运褪,修改后的atosl,依然不能正常工作,運行性能也不高玖瘸,所以放棄秸讹;
第二種解決方案中,Mac下對符號化支持比較好雅倒,atos或者symbolicate符號化工具璃诀,可行性較高。
使用工具
采用SYM工具蔑匣,用swift編寫的mac程序.
執(zhí)行方案
采用如下流程:
Mac下符號化并統(tǒng)計圖解
在SYM程序中劣欢,已把信息提取出來棕诵,并把每一行的數(shù)據(jù)以tab分割,結(jié)尾處以回車分割凿将,插入到文件
~/Documents/Crash/sql.txt
校套,這樣文件中,每一行為數(shù)據(jù)庫中的每一條數(shù)據(jù)牧抵。
數(shù)據(jù)庫
安裝好數(shù)據(jù)庫笛匙,建好數(shù)據(jù)庫名(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
# 打開SYM打包好的Mac app
open ~/Documents/soft/SYM.app
# 打開后自動符號化特定目錄下的crash文件,根據(jù)估算映琳,這里寫了個40秒
sleep 40
# 40秒后机隙,關(guān)閉app
osascript -e 'quit app "SYM"'
echo "save sql.txt finished"
# 執(zhí)行存儲到數(shù)據(jù)庫的腳本
. ~/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