iOS----- Crash 分析(文二)-崩溃日志组成
iOS Crash 分析(文二)-崩溃日志组成
现在我们看一个淘宝iOS主客崩溃的例子:
### 1.进程信息 ###
Incident Identifier: E4201F10-6F5F-40F9-B938-BB3DA8ED7D50
CrashReporter Key: TODO
Hardware Model: iPhone4,1
Process: Taobao4iPhone [3538]
Path: /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/Taobao4iPhone.app/Taobao4iPhone
Identifier: com.taobao.taobao4iphone
Version: 4.8.1
Code Type: ARM
Parent Process: launchd [1]
### 2.基本信息 ###
Date/Time: 2014-09-16 21:39:30 +0000
OS Version: iPhone OS 7.1.2 (11D257)
Report Version: 104
### 3.异常信息 ###
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0xa2400db3
Crashed Thread: 0
### 4.线程回溯 ###
Thread 0 name: Dispatch queue: com.apple.main-thread
### 5.Crash调用堆栈 ###
Thread 0 Crashed:
0 libobjc.A.dylib 0x3838760c 0x38375000 + 75276
1 Taobao4iPhone 0x012c03e1 0x66000 + 19244001
2 Taobao4iPhone 0x012c054f 0x66000 + 19244367
3 Foundation 0x2e4de163 0x2e419000 + 807267
4 CoreFoundation 0x2dac9167 0x2da2a000 + 651623
5 CoreFoundation 0x2dac8d7f 0x2da2a000 + 650623
6 CoreFoundation 0x2dac711b 0x2da2a000 + 643355
7 CoreFoundation 0x2da31ebf 0x2da2a000 + 32447
8 CoreFoundation 0x2da31ca3 0x2da2a000 + 31907
9 GraphicsServices 0x3298b663 0x32982000 + 38499
10 UIKit 0x3037e14d 0x30310000 + 450893
11 Taobao4iPhone 0x0006b349 0x66000 + 21321
12 Taobao4iPhone 0x0006a5e8 0x66000 + 17896
Thread 1:
0 libsystem_kernel.dylib 0x38928808 0x38928000 + 2056
1 libdispatch.dylib 0x38869e03 0x3885f000 + 44547
### 5.动态库信息 ###
Binary Images:
0xf4000 - 0x1a5bfff +Taobao4iPhone armv7 <43ebe409980f31fd9be165a64b002af5> /var/mobile/Applications/DF0B483E-238E-4F55-947A-AB27ED688DC8/Taobao4iPhone.app/Taobao4iPhone
0x2c641000 - 0x2c645fff AccessibilitySettingsLoader armv7 <e006260ea20e3a1dacd330ac2026c15b> /System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader
0x2c742000 - 0x2c82afff RawCamera armv7 <8f62f266f7d539a5a388221dfe90db50> /System/Library/CoreServices/RawCamera.bundle/RawCamera
0x2c954000 - 0x2ca56fff AVFoundation armv7 <e6f4e322434733c2a6d074bdc226b08d> /System/Library/Frameworks/AVFoundation.framework/AVFoundation
我解读一下这份崩溃日志:
1.进程信息
第一部分是闪退进程的相关信息。
Incident Identifier
是崩溃报告的唯一标识符。
CrashReporter Key
是与设备标识相对应的唯一键值。虽然它不是真正的设备标识符,但也是一个非常有用的情报:如果你看到100个崩溃日志的CrashReporter Key值都是相同的,或者只有少数几个不同的CrashReport值,说明这不是一个普遍的问题,只发生在一个或少数几个设备上。
Hardware Model
标识设备类型。 如果很多崩溃日志都是来自相同的设备类型,说明应用只在某特定类型的设备上有问题。上面的日志里,崩溃日志产生的设备是iPhone 4s。
Process
是应用名称。中括号里面的数字是闪退时应用的进程ID。
2.基本信息
Version
APP的版本号
OS Version
iOS操作系统版本号 iPhone OS 7.1.1 (11D201)
7.1.1:系统版本
11D201:build号
这里要所以下build号。每个系统版本号有可能会对应多个build号。如苹果发布的7.1.1会有几个版本,如:电信版本、联通版本等。build号我们后面对日志符号化的时候会用到。
3.异常信息
在这部分,你可以看到闪退发生时抛出的异常类型。还能看到异常编码和抛出异常的线程。根据崩溃报告类型的不同,在这部分你还能看到一些另外的信息。
Crashed Thread
crash线程号。可以根据这个编号找到对应的crash调用堆栈,当前crash线程的编号为0,所以我们可以直接找到crash线程的堆栈信息:
Thread 0 Crashed:
0 libobjc.A.dylib 0x3838760c 0x38375000 + 75276
1 Taobao4iPhone 0x012c03e1 0x66000 + 19244001
2 Taobao4iPhone 0x012c054f 0x66000 + 19244367
3 Foundation 0x2e4de163 0x2e419000 + 807267
4 CoreFoundation 0x2dac9167 0x2da2a000 + 651623
5 CoreFoundation 0x2dac8d7f 0x2da2a000 + 650623
6 CoreFoundation 0x2dac711b 0x2da2a000 + 643355
7 CoreFoundation 0x2da31ebf 0x2da2a000 + 32447
8 CoreFoundation 0x2da31ca3 0x2da2a000 + 31907
9 GraphicsServices 0x3298b663 0x32982000 + 38499
10 UIKit 0x3037e14d 0x30310000 + 450893
11 Taobao4iPhone 0x0006b349 0x66000 + 21321
12 Taobao4iPhone 0x0006a5e8 0x66000 + 17896
4.线程回溯
线程回溯 这部分提供应用中所有线程的回溯日志。 回溯是闪退发生时所有活动帧清单。它包含闪退发生时调用函数的清单。看下面这行日志:
2 Taobao4iPhone 0x012c054f 0x66000 + 19244367
这条调用栈包括下面四部分:
1. 模块号:这里是2
2. 二进制库名:这里是Taobao4iPhone
3. 调用方法的地址:这里是0x012c054f
4. 第四部分分为两列,基地址和偏移地址。此处基地址为0x66000,偏移地址为19244367。基地址指向crash的模块(也是模块的load地址)如UIKit。偏移地址指向crash代码的行数。如何转换我们后面讨论。这些信息都保存在dsym文件中。
5.Crash调用堆栈
这一部分是我们分析crash最重要的信息。一般我们会把焦点放在crash线程的堆栈上。因为这样可以帮我最快的找到crash的原因。
5.动态库信息
这些信息包括动态库名称、UUID、模块起始地址、模块结束地址、指令集种类、安装路径等信息。
这些信息都是在符号化堆栈用到的。后面我们讨论怎么用。
iOS----- Crash 分析(文二)-崩溃日志组成的更多相关文章
- iOS Crash 分析 符号化崩溃日志
参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhack ...
- iOS --------Crash 分析(一)
iOS Crash 分析(文一)- 开始 1. 名词解释 1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID.目的是为了唯一识别这个文件. 2. dwarfdump 苹 ...
- IOS crash分析
此处不讨论具体的如何根据.dsym文件解析crash log的方式. 什么是崩溃: 不希望出现的中断,APP收到了系统发出的unhandle signal,来源主要由系统内核,处理器,或者应用程序本身 ...
- iOS----- Crash 分析(文三)- 符号化崩溃日志
未符号化的崩溃日志就象一本天书,看不懂,更别谈分析崩溃原因了.所以我们在分析日志之前,要把日志翻译成我们可以看得懂的文字.这一步我们称之为符号化. 在iOS Crash分析(文一)中已经提到过符号化的 ...
- 【转】iOS应用崩溃日志分析
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...
- iOS应用崩溃日志分析
转自raywenderlich 作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应 ...
- iOS崩溃日志分析-b
1名词解释 1.1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID,目的是为了唯一识别这个文件. 1.2. dwarfdump 苹果提供的命令行工具,其中一些功能就是查 ...
- 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 ...
- iOS开发--应用崩溃日志揭秘(二)
场景 4: 吃棒棒糖时闪退! 用户邮件说, “当rage master吃棒棒糖时应用就闪退…” 另一用户说, “我让rage master 吃棒棒糖,没几次应用就闪退了!”崩溃日志如下: Incide ...
随机推荐
- Servlet读取Excel标准化数据库过程记录
完成数据库的连接 获取连接参数 拷贝1.数据库URL 2.驱动程序类 3.用户 编写Servlet 1.创建连接对象 Connection con = null; PreparedStatement ...
- [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...
- 第二天ci项目规划 数据库设计
第二天ci项目规划 数据库设计 商品 + 用户 + 订单 数据库设计思想和方法 关于商品品牌 ,分类 ,属性 如何表示 用一个字段 还是再设计一张表 品牌和商品 是一种信息 还是两种信息 一张表一般只 ...
- 关于jquery简单操作简单表格
最近在摸索jquery中,想着学习过程中还是记下点自己的东西比较好,不管是日后自己查阅,亦或是对于他人有些许帮助. 也是一件两全其美的事情了. 下面我就简单 贴上自己的html中重要部分了. 具体实现 ...
- linux系统CentOS7
linux系统CentOS7 到http://mirrors.sohu.com/mysql/下载想要的mysql版本 这里用到的是 mysql-5.6.33-linux-glibc2.5-x86_64 ...
- 图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片
(function () { var coverImage = document.querySelector('<div id="coverImage">file< ...
- SQLite 的创建与编辑
创建数据库语句 -(void)creatData { sqlite3 *sqlite = nil; NSString *filePath = [NSHomeDirectory() stringByAp ...
- bzoj3631树链剖分
虽然是水题1A的感觉太爽了O(∩_∩)O~ 题意相当于n-1次树上路径上每个点权值+1,最后问每个点的权值 本来想写线段树,写好了change打算框架打完了再来补,结果打完发现只是区间加和单点查 前缀 ...
- centos中docker mongodb 配置
安装docker,对于Centos7,如下: $ sudo yum update$ sudo yum -y install docker$ sudo systemctl start docker 首先 ...
- 如何将本地的jar包上传到maven本地仓库中
首先需要将本地的jar包做mvn install到本地仓库中 mvn install:install-file -Dfile=D:\skyeye-ruleInfo\lib\lucene-querypa ...