iOS手动解析崩溃日志(详细过程)

背景

线上Crash,无法全局打断点。

  • APP集成有友盟统计,后台拿到崩溃日志可进行bug定位
  • 通用性:该方法不局限于友盟统计,适用于大多数第三方SDK收集的崩溃日志

错误摘要:

Application threw exception NSInternalInconsistencyException: Tried to pop to a view controller that doesn't exist.
Originated at or in a subcall of __40-[YQNewPublishController publishRequest]_block_invoke
6 AppName 0x000000010100eef4 0x100fc0000 + 323316

从崩溃日志最后一行可以看到:

  • 起始地址:0x100fc0000
  • 偏移后地址:0x000000010100eef4

仅需两步:

1、打开Xcode,上方菜单栏可以看到Window->Organizer->Archives,找到对应版本,右键点击Show In Finder,可以看到对应的.xcarchive文件,然后右键点击显示包内容,可以看到dYSMs文件夹,拷贝里面的.dYSM文件,存放到新建crash目录下。
2、打开终端Terminal,cd到新建的crash目录下,输入:

atos -o AppName.app.dSYM/Contents/Resources/DWARF/AppName -arch arm64 -l 0x100fc0000 0x000000010100eef4
  • 注意修改其中AppName是咱们的应用名。,展开.app.dSYM包内容,找到最后一级路径拖到atos -o后面即可

打印结果

-[YQDataTeamScoreController requestData] (in ) (YQDataTeamScoreController.m:127)

  • 结果显示crash出现在YQDataTeamScoreController.m的第127行

第二种 新建.sh脚本文件,自动解析crash

自己新建一个.sh文件,将脚本文件拷贝到其中,.sh文件中用#注释语句,因为#在Markdown语法中有特殊含义,故.sh文件中需要将//换成#

// 使用须知
// 1.自己新建一个文件夹,将.xcarchive文件和talkingData上的日志文件(.csv格式)下载并保存到该目录
// 2.cd进入该目录, 运行脚本crash.sh, 脚本可带参数, 不传参数时默认是YourAPP, 带参数时,参数表示其它功能名称。例如./crash.sh hrloo

if [ ! -n "$1" ] ;then
xcarchiveName="YourAPP" 
else
xcarchiveName="$1"
fi
dirs=$(pwd)

//-----------------------------------------------//
mkdir -p file $dirs/file

cd $dirs
cp -r ./*.xcarchive $xcarchiveName.xcarchive

cd $dirs/"$xcarchiveName".xcarchive/dSYMs
cp -r ./$xcarchiveName.app.dSYM $dirs/file

cd $dirs

cp -r ./*.csv ./file/""$xcarchiveName"log".txt
rm -r ./"$xcarchiveName".xcarchive

//-------------------deal txt-------------------//

cd file
grep -e "reason" "$xcarchiveName"log.txt
adress=`grep -e "Start Address" "$xcarchiveName"log.txt`
for adr in $adress
do
{
if [[ $adr =~ '0x' ]];
then
adress=$adr
fi
}
done

echo '---------------------------crash begin function-------------------------------\n'
result=`grep -e "$xcarchiveName +" "$xcarchiveName"log.txt`
while read line
do
{
for var in $line
do
if [[ $var =~ '0x' ]];
then
atos -o $xcarchiveName.app.dSYM/Contents/Resources/DWARF/$xcarchiveName -arch arm64 -l $adress $var
fi
done
}
done <<EOF
$result
EOF
echo '----------------------------crash end function---------------------------------\n'

cd ../
rm -r file


参考:https://my.oschina.net/u/3445809/blog/885617

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容