博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS Crash 分析(文二)-崩溃日志组成
阅读量:7077 次
发布时间:2019-06-28

本文共 4636 字,大约阅读时间需要 15 分钟。

iOS Crash 分析(文二)-崩溃日志组成


如今我们看一个淘宝iOS主客崩溃的样例:

### 1.进程信息 ###Incident Identifier: E4201F10-6F5F-40F9-B938-BB3DA8ED7D50CrashReporter Key:   TODOHardware Model:      iPhone4,1Process:         Taobao4iPhone [3538]Path:            /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/Taobao4iPhone.app/Taobao4iPhoneIdentifier:      com.taobao.taobao4iphoneVersion:         4.8.1Code Type:       ARMParent Process:  launchd [1]### 2.基本信息 ###Date/Time:       2014-09-16 21:39:30 +0000OS Version:      iPhone OS 7.1.2 (11D257)Report Version:  104### 3.异常信息 ###Exception Type:  SIGSEGVException Codes: SEGV_ACCERR at 0xa2400db3Crashed Thread:  0### 4.线程回溯 ###Thread 0 name:  Dispatch queue: com.apple.main-thread### 5.Crash调用堆栈 ###Thread 0 Crashed:0   libobjc.A.dylib                     0x3838760c 0x38375000 + 752761   Taobao4iPhone                       0x012c03e1 0x66000 + 192440012   Taobao4iPhone                       0x012c054f 0x66000 + 192443673   Foundation                          0x2e4de163 0x2e419000 + 8072674   CoreFoundation                      0x2dac9167 0x2da2a000 + 6516235   CoreFoundation                      0x2dac8d7f 0x2da2a000 + 6506236   CoreFoundation                      0x2dac711b 0x2da2a000 + 6433557   CoreFoundation                      0x2da31ebf 0x2da2a000 + 324478   CoreFoundation                      0x2da31ca3 0x2da2a000 + 319079   GraphicsServices                    0x3298b663 0x32982000 + 3849910  UIKit                               0x3037e14d 0x30310000 + 45089311  Taobao4iPhone                       0x0006b349 0x66000 + 2132112  Taobao4iPhone                       0x0006a5e8 0x66000 + 17896Thread 1:0   libsystem_kernel.dylib              0x38928808 0x38928000 + 20561   libdispatch.dylib                   0x38869e03 0x3885f000 + 44547### 5.动态库信息 ###Binary Images:   0xf4000 -  0x1a5bfff  +Taobao4iPhone                      armv7 <43ebe409980f31fd9be165a64b002af5>     /var/mobile/Applications/DF0B483E-238E-4F55-947A-AB27ED688DC8/Taobao4iPhone.app/Taobao4iPhone0x2c641000 - 0x2c645fff  AccessibilitySettingsLoader         armv7 
/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader0x2c742000 - 0x2c82afff RawCamera armv7 <8f62f266f7d539a5a388221dfe90db50> /System/Library/CoreServices/RawCamera.bundle/RawCamera0x2c954000 - 0x2ca56fff AVFoundation armv7
/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 + 752761   Taobao4iPhone                       0x012c03e1 0x66000 + 192440012   Taobao4iPhone                       0x012c054f 0x66000 + 192443673   Foundation                          0x2e4de163 0x2e419000 + 8072674   CoreFoundation                      0x2dac9167 0x2da2a000 + 6516235   CoreFoundation                      0x2dac8d7f 0x2da2a000 + 6506236   CoreFoundation                      0x2dac711b 0x2da2a000 + 6433557   CoreFoundation                      0x2da31ebf 0x2da2a000 + 324478   CoreFoundation                      0x2da31ca3 0x2da2a000 + 319079   GraphicsServices                    0x3298b663 0x32982000 + 3849910  UIKit                               0x3037e14d 0x30310000 + 45089311  Taobao4iPhone                       0x0006b349 0x66000 + 2132112  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、模块起始地址、模块结束地址、指令集种类、安装路径等信息。

这些信息都是在符号化堆栈用到的。后面我们讨论怎么用。

转载地址:http://gnpml.baihongyu.com/

你可能感兴趣的文章
struts2的配置文件
查看>>
JSP第5次测试---测试分析
查看>>
tomcat容器
查看>>
Nginx配置文件详细说明
查看>>
同时可以修改时间和日期的datetime_select and 有关时间的转换
查看>>
IOS Orientation, 想怎么转就怎么转~~~
查看>>
Finding Lines
查看>>
服务提供者及门面
查看>>
POJ-1611-The Suspects(并查集)
查看>>
用VC生成 IDispatch 包装类
查看>>
xcode5.1上真机调试报告No architectures to compile for...的解决办法
查看>>
Codeforces 106A:Card Game
查看>>
算法导论读书笔记-第十四章-数据结构的扩张
查看>>
HttpClient使用详解
查看>>
char、varchar、nchar、nvarchar的区别
查看>>
锐捷、赛尔认证MentoHUST
查看>>
前后台传值 201...
查看>>
POJ 2133 暴搜
查看>>
BZOJ 1379 模拟退火
查看>>
MSDN中关于COM教程编译参数的修改
查看>>