一、前言:

作为一个合格的iOS开发者,除了具有规范强悍的编码能力外,还应该具有过硬的查错纠错能力。在项目运行时,程序崩溃是不可避免的,遇到这个问题,有时会出现一大堆的crash日志,艹,貌似看不懂呀。其实没有那么可怕,我们可以将这些日志格式化,通过它来快速定位问题的所在,以便迅速搞定它。

二、分析:

首先我们来看一个crash日志,大略的介绍其中的几个重要的关键词:

关键词解释:

2.1、 进程信息
第一部分是闪退进程的相关信息:

Incident Identifier : 是崩溃报告的唯一标识符。

CrashReporter Key: 是与设备标识相对应的唯一键值。虽然它不是真正的设备标识符,但也是一个非常有用的情报:如果你看到100个崩溃日志的CrashReporter Key值都是相同的,或者只有少数几个不同的CrashReport值,说明这不是一个普遍的问题,只发生在一个或少数几个设备上。

Hardware Model :标识设备类型。 如果很多崩溃日志都是来自相同的设备类型,说明应用只在某特定类型的设备上有问题。上面的日志里,崩溃日志产生的设备是iPhone 4s。

Process:对项目的操作权限,上面的是可读可写

Path:崩溃文件的路径

Identifier:项目标识符,就是Bundle Id

Version:版本号

.....等等.......

2.2、基本信息
这部分给出了一些基本信息,包括闪退发生的日期Date/Time和时间Launch Time,设备的iOS版本OS Version等。

2.3、异常信息
Exception Type:异常的类型。
Exception Codes :异常错误码
Termination Reason:闪退的原因,比如常见的数组越界啊,什么的。
Triggered by Thread:出现问题在哪个线程,这个比较重要,首先确定在哪个线程中出了问题,然后再去定位。

2.4、线程回溯
这部分提供应用中所有线程的回溯日志。 线程调用的一些,堆栈信息,压根看不懂,所有需要进行符号化处理。

三、解析崩溃日志

用Xcode自带的 symbolicatecrash 工具来解析的.crash文件

3.1、获取crash文件:
  a.直接从设备中获取方法如下图

    

  b.如果产品在上架过程中发生崩溃,苹果那边的测试人员给我们直接发送过来已经整理好的崩溃日志文件,只需要根据其解决问题就行。

3.2、找到app包所对应的.dSYM文件。

强调要对应.dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。测试给过来的.crash文件中,关于崩溃的确切语句和函数部分只有16进制地址符号,并不是我们在xcode调试时看到的xxx.cpp(xxfunction xx行)这样的。一般发布一个版本需要保存好对应的.dSYM和.app包,方便分析crash。如图所示:

3.3、就是找到Xcode中的symbolicatecrash工具咯,本人用的Xcode8,路径为:

其他版本的xcode,自己百度咯,反正都差不多。把我们需要的工具直接复制到桌面上来(方便用)。

3.4、.crash文件的分析
  a.配置环境变量DEVELOPER_DIR,(配置好了就不再需要)

  b.新建一个文件夹,将第二步中获取的两个文件放在同一个文件夹中

注意:上面指的是其所在的路径。经过上面的简单几步我们就能得到格式化好的crash日志,这样就方便我们定位bug的位置了。
著作权归作者所有,原文链接:http://www.jianshu.com/p/e616d094cf65

iOS:crash崩溃日志分析相关推荐

  1. iOS App崩溃日志分析

    APP新版本上线之前,一般都会经过测试团队的反复测试,确认无bug后才会发布.发布那刻作为开发人员的你,估计欣喜若狂吧,自豪吧!!.发布后线上运行好长一段时间,均安然无恙,可突然有一天你们家CEO说, ...

  2. iOS应用崩溃日志分析 iOS应用崩溃日志揭秘

    转自:http://www.raywenderlich.com/zh-hans/30818/ios%E5%BA%94%E7%94%A8%E5%B4%A9%E6%BA%83%E6%97%A5%E5%BF ...

  3. iOS崩溃日志分析-b

    1名词解释 1.1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID,目的是为了唯一识别这个文件. 1.2. dwarfdump 苹果提供的命令行工具,其中一些功能就是查 ...

  4. iOS Crash崩溃异常教你查看和分析

    要学会看crash崩溃和报告 一个应用程序并不总会一直运行的很好,它总会有出现crash崩溃的情况.如果在应用程序中接入了一些第三方的crash收集工具或者自建crash收集报告平台的话将会很好的帮助 ...

  5. iOS 查看崩溃日志

    iOS开发,查看崩溃日志的办法有几个. 1发布之前,内测阶段,安装hoc版本的ipa,如果崩溃了,拿到设备,在编包的机器上打开xcode,orgnizer,查看设备的日志就能看到. 2发布之后,用户使 ...

  6. adb安卓调试桥测试应用(adb shell + crash(崩溃)日志)

    一.adb简介 Android 调试桥 (ADB,Android Debug Bridge) 是Android SDK里的一个工具.可看成一个客户端-服务器程序,其中客户端是用来操作的电脑,服务器端是 ...

  7. iOS 从设备日志分析App网络性能

    环境准备 Apple Console (控制台程序,MacOS自带) iPhone(iPad等设备也可,不需要越狱) 数据线 iOS App(不需要破解,直接从AppStore安装就可以) 操作步骤 ...

  8. iOS crash 崩溃问题的追踪方法

    在调试程序的时候,总是碰到crash的bug,而且一追踪就是一些汇编的代码,让人特别疑惑. 一般情况下可以通过增加两天断点来解决此问题,方法介绍如下: 基本上有错误分为以下几种类型: signal(S ...

  9. android友盟错误日志,友盟崩溃日志分析三种方式

    第一种:采用友盟提供的工具 1.再友盟错误页面,右下角,有一个保存错误日志的. 比如:xxx iOS_错误分析_错误详情_100442.csv 2.把xxx.app.dSYM 放到这个目录下~/Lib ...

最新文章

  1. Java中ArrayList源码分析
  2. oracle双机python连接_Python连接Oracle
  3. 在阿里做科研是一种什么感受?
  4. 统计寄存器AX中1 的个数
  5. 页面校验请求MmEwMD(转载)
  6. 基于京东家电商品知识图谱的自动问答系统(一) -- Neo4j构建知识图谱
  7. 对比赛评分进行现场管理及展示的专业系统_评委计分系统-双屏标准版_主要操作部分图片演示
  8. 3600000毫秒等于多少小时_一秒多少毫秒
  9. 经典的850棋牌游戏搭建教学
  10. ASP.net 密码加密和使用密码登录
  11. 解决Photoshop CS3 输入中文不能显示 输入文字不能显示 输入文字显示缓慢
  12. bingo培训——软件设计
  13. JavaScript-事件和事件对象、实现键盘打字小游戏
  14. 求解两圆相交的交点坐标
  15. 【LAS 】 SRS 开启ATC功能 时间戳测试
  16. 阿里云安装数据库mysql数据库服务器_阿里云CentOs服务器 安装与配置mysql数据库...
  17. python上海房价数据分析统计服_(干货)数据分析案例--以上海二手房为例
  18. windows mysql 登录报错 ERROR 1045 已解决
  19. 2022北京老博会,第九届中国北京国际老年产业博览会
  20. ssm框架+MySQL批量添加和删除

热门文章

  1. 1688API接口工具
  2. 华为RPA WeAutomate Studio使用心得
  3. Android蓝牙协议介绍
  4. python中查找文件当前位置_如何查找当前目录和文件目录
  5. 微信有没有免费提现服务器,微信有没有免费提现的方法 教你三个微信提现的小技巧...
  6. java nio attachment_7. 彤哥说netty系列之Java NIO核心组件之Selector
  7. 计算机excel数据模板,excel表格范本
  8. 帝国cms导入html模板,帝国CMS模板组导入导出更换模板
  9. python安装教程(Win8环境)
  10. 儿子读书成绩不好能学计算机专业吗,我的儿子十七岁了,学习成绩不好,也不爱念书,整天就是玩电脑和手机,我想让他学点儿技术不知道学什么适...