iOS- 全方位解析.crash文件崩溃报告

1.前言  

想来每个iOS攻城狮,都免不了要接触.crash文件

那么什么是.crash文件?

iOS app的所有崩溃记录都会记录在设备上,所以对于和我一样没有集成让用户发送崩溃报告功能的iOS开发者来说,要获得crash文件就必须先连上崩溃过的机器,然后从崩溃过的机器上导出.crash文件

2.如何解析.crash文件  

我们先看一眼导出来的.crash文件,重点看下崩溃部分的记录

如下图

显然从这图里,我们没法定位出具体的错误,和崩溃的具体行数。

我们得到是个二进制的报告,这时候我们需要对它进行反编译。

对.crash文件进行反编译我们需要用到三个文件,缺一不可

2.1.找到发布app时的.ipa文件(就是你打包app上传到商店里的那个文件)  

2.2.找到Archive时生成的.dSYM文件  

Show in Finder后对文件夹中的这个.xcarchive文件右键,显示包内容,就可以看到一个名为dSYMs的文件夹,把里面的.dSYM文件拷出来

2.3.将.ipa、.crash、.dSYMs 文件放在同一个文件夹(例如:创建一个bugcrash文件夹)  

2.4.打开你的xcode,然后打开你发布时的代码(记住必须保证是你发布时的代码,如果不是的话,可能会出现指向的崩溃行数有误,或者无法解析出来的问题)  

3.利用xcode自带re-symbolicate解析崩溃报告  

点击Devices进去

然后点击View Device Logs 进去

现在打开bugcrash文件夹,然后把.crash文件拖入右框中然后选中右键re-symbolicate log进行解析

大约1-10秒中之后,我们就能发现之前的二进制数变成了我们想要看到的具体行数和具体的.crash原因.

4.如果xocde自带的Re-symbolicate仍无法解析,那么我们需要利用symbolicatecrash借助命令行手动解析  

symbolicatecrash是一个隐藏工具,它在我的Mac中的具体路径如下(Xcode6.1.app请换成你的Xcode名称)

/Applications/Xcode6.1.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

把这个路径拷贝一下,然后粘到Finder的“前往文件夹”下,前往,就可以看到symbolicatecrash工具了,现在把它也拷到桌面的crash文件夹里。至此,crash文件夹里现在有4个文件了,分别是.app, .crash, .dSYM, symbolicatecrash。接下来就是用终端敲命令,生成更易分析的crash。

./symbolicatecrash /Users/xxxx/Desktop/bugcrash/InOrder.crash /Users/xxxx/Desktop/bugcrash/InOrder.app.dSYM > Control_symbol.crash

上述命令中,"xxxx"和"InOrder"请自行替换成对应的名称。运行,这时候终端可能会报错Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53. 这时候在终端中再输入如下(Xcode6.1.app依然是要替换成实际名称)

然后再跑一下刚刚的那个命令,这时候看一下桌面的crash文件夹下就会多出一个名为“Control_symbol.crash”的文件,我们打开看一下。和刚刚一样。

如果还有什么不明白欢迎在下面留言,有时间的我回一一回复,谢谢大家。

作者: 清澈Saup
出处:http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

时间: 2024-10-11 12:46:12

iOS- 全方位解析.crash文件崩溃报告的相关文章

iOS如何解析crash文件中的地址

1.目录中存放app文件 2.打开文件 3.执行命令otool -arch arm64 -l ./QQStock  | grep -B 1 -A 10 "LC_SEGM" | grep -B 3 -A 8 "__TEXT" 4.解析命令xcrun atos -arch arm64 -o ./QQStock 0x100633614 需要计算出绝对地址(基地址+偏移地址) lideiMac:4.0.1 lixiang$ lideiMac:4.0.1 lixiang$ c

解析 iOS crash 文件

crash 文件里,Binary Images (app.framework) 对应的 CPU 架构,都有一个UUID 标识 在解析 crash 文件时,需要通过 UUID 匹配对应的  dSYM 文件才可正确解析,解析时,symbolicatecrash 会自动通过搜索查找 dSYM 文件 symbolicatecrash crash_file dSYM_file > crash.log 手工查找 dSYM 文件 mdfind "com_apple_xcode_dsym_uuids ==

Xcode7.3工具解析App崩溃日志(.crash文件)

Xcode7.3工具解析App崩溃日志(.crash文件) 原文链接:http://blog.csdn.net/u011056605 开发的App或者游戏提交审核后,偶尔会收到测试反馈的消息,说应用崩溃了,bug偶尔出现,难以找到确定的重现方法. 怎么办?可以分析崩溃文件啊,也就是app崩溃后,自动保存在设备本地的.crash文件. 获得崩溃日志的方式,在 获取设备上的调试信息与崩溃日志分析 中有说. 在环境ok的情况下,xcode中是可以自动解析.crash文件的.旧版本的xcode甚至可以导

iOS: Crash文件解析(一)

iOS Crash文件的解析(一) 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断.联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问题,就换一台,如果10台后挂了他就不做手机了.好了不闲扯了,今天就跟大家一起聊聊iOSCrash文件的组成以及常用的分析工具. 有一个WWDC 2010的视频推荐大家抽空看看,视频名称“Understanding C

IOS崩溃日志解析(crash log)

IOS的应用程序少不了crash,互联网统计分析工具友盟有一项目错误分析的功能,专门用于应用程序崩溃日志统计,最近研究友盟上统计到的崩溃日志,在此对崩溃日志做一个简单的总结. IOS崩溃日志分类: 一.低内存崩溃:IOS设备检测到低内存时,虚拟内存系统发出通知请求应用释放内存.这些通知发送到所有正在运行的应用和进程,试图收回一些内存.如果内存使用依然居高不下,系统将会终止后台线程以缓解内存压力.如果可用内存足够,应用将能够继续运行而不会产生崩溃报告.否则,应用将被iOS终止,并产生低内存崩溃报告

[iOS]使用symbolicatecrash分析crash文件

对于我们iOS开发者来说,最心碎的事莫过于苹果审核一个星期后上架app store,而第二天就报出闪退bug.一周前我刚经历过,而且最坑的是由于第一次做个人开发,经验不足,没有集成友盟的分析SDK,还好有几个好心同事下载了,然后果然有两台机器上出现了闪退.真是天无绝人之路,最重要的crash文件有了.下面我就来详细描述一下具体的心路历程以及分析方法. iOS app的所有崩溃记录都会记录在设备上,所以对于和我一样没有集成让用户发送崩溃报告功能的iOS开发者来说,要获得crash文件就必须先连上崩

转 理解与分析ios应用的崩溃报告

理解与分析ios应用的崩溃报告 源网址: http://developer.apple.com/library/ios/#technotes/tn2151/_index.html 当一个应用程序崩溃时,创建一份“崩溃报告”对于理解崩溃是如何引起的非常有用.本文档包含有关如何识别,了解并解释崩溃报告的基本信息. 简介 当一个应用程序在一台iOS 设备上崩溃时,一份“崩溃报告”将在该设备上次创建并存储起来.崩溃报告描述应用程序是在何种条件下崩溃的,大部分情况下包含一份当前正在运行线程的完整的堆栈跟踪

分析iOS Crash文件:符号化iOS Crash文件的3种方法

转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息. 要么通过用户反馈拿到crash文件,要么借助自己或第3方的crash上传模块拿到crash文件. 今天要分析的场景是你拿到用户的.crash文件之后,如何

iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile

这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的概述 2.[iOS push全方位解析](二) 生成push证书,生成Provisioning Profile(本篇) 3.[iOS push全方位解析](三) 一个极简的demo,并测试一下push 这里查看原文 ------------------------------------------