iOS崩溃日志——这一堆“乱码”如何看

本文章转载于搜狗测试

我们在进行iPhone应用测试时必然会在“隐私”中找到不少应用的崩溃日志,但是不会阅读对于很多人来说简直头疼。在此小编为大家详细介绍一下具体的阅读方法,希望大家可以更快的定位BUG。首先我们先看一下从iPhone中随机抽出的一个Crash日志:

//1.进程信息

Hardware Model:      iPhone9,1

Process:             com.sogou.sogouinput.BaseKeyboard[4447]

Path:               /private/var/containers/Bundle/Application/D121D4D7-C3EE-4861-B5AF-10C367749E24/SogouInput.app/PlugIns/com.sogou.sogouinput.BaseKeyboard.appex/com.sogou.sogouinput.BaseKeyboard

Identifier:          com.sogou.sogouinput-.basekeyboard

Version:             79794 (4.1.0)

Code Type:           ARM-64 (Native)

Role:                Foreground

Parent Process:      launchd [1]

Coalition:           com.sogou.sogouinput-.basekeyboard[4557]

//2.基本信息

Date/Time:           2016-11-22 18:55:46.2041 +0800

Launch Time:         2016-11-22 18:55:45.4011 +0800

OS Version:          iPhone OS 10.0.2 (14A456)

Report Version:      104

//3.异常信息

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)

Exception Subtype:KERN_INVALID_ADDRESS at 0x006e006e00000010

Triggered byThread:  7

//4.线程回溯(显示发生crash线程的信息)

Thread 0 name:  Dispatch queue: com.apple.main-thread

Thread 0:

0   libsystem_kernel.dylib         0x0000000185fa016cmach_msg_trap + 8

1   libsystem_kernel.dylib         0x0000000185f9ffdcmach_msg + 72

2   CoreFoundation                    0x0000000186f9dcec __CFRunLoopServiceMachPort + 192

3   CoreFoundation                    0x0000000186f9b908 __CFRunLoopRun + 1132

4   CoreFoundation                    0x0000000186eca048 CFRunLoopRunSpecific + 444

5   GraphicsServices                    0x000000018894d198GSEventRunModal + 180

6   UIKit                          0x000000018cea4628 -[UIApplication _run] + 684

Thread 7 name:  SGInputThread

Thread 7 Crashed:

0   libsystem_c.dylib              0x0000000185eda77cfclose + 40

1   libsystem_c.dylib              0x0000000185eda778fclose + 36

2   ...gou.sogouinput.BaseKeyboard    0x000000010034e420 t_fileRead::Close()(t_file.cpp:251)

3   ...gou.sogouinput.BaseKeyboard    0x000000010034e49c t_fileRead::Open(unsignedshort const*) (t_file.cpp:221)

4   ...gou.sogouinput.BaseKeyboard    0x00000001002ac8f4t_lbsDict::AddSCD(unsigned short const*, int) (t_lbsDict.cpp:218)

5   ...gou.sogouinput.BaseKeyboard    0x00000001003f718ct_convertInterface::AddSCD(unsigned short const*, int)(t_convertInterface.cpp:544)

6   ...gou.sogouinput.BaseKeyboard    0x0000000100362478t_pyDictInterface::BuildExtDict(unsigned short const*, s_cellDictInput*,s_cellDictOutput*) (Dict.cpp:961)

//5.进程状态

Thread 7 crashedwith ARM Thread State (64-bit):

x0: 0x0000000000000000            x1:0x0000000185f1b89c         x2: 0x0000000000000000        x3:0x00000001080e422c

x4: 0x0000000100000001            x5:0x0000000000000001        x6: 0x0000000000000000        x7: 0x0000000000000000

x8: 0x000000004f4e4345             x9:0x0000000000000038        x10: 0x0000000000000010      x11:0x000000000000001f

x12: 0x000000000000000d            fp:0x000000016e399d50         lr: 0x0000000185eda778          sp:0x000000016e399d40

pc:0x0000000185eda77c                cpsr:0x20000000

//6.二进制映像

Binary Images:

0x100fa8000 -0x100fd7fff dyld arm64  /usr/lib/dyld

0x102a88000 -0x102a8ffff sdk.dylib arm64 <5d710be25db4309d8b5e344066a9cb29>/System/Library/Caches/com.apple.xpc/sdk.dylib

0x1859a4000 -0x1859a5fff libSystem.B.dylib arm64 <8788325e11bc31a39b075a3497d26ebd> /usr/lib/libSystem.B.dylib

0x1859a6000 -0x1859fbfff libc++.1.dylib arm64 <95f6dd603b933208ba95cc2d84613c54> /usr/lib/libc++.1.dylib

0x1859fc000 -0x185a1cfff libc++abi.dylib arm64 <286b3adc78d1308eaa0d6f10914b1fa7>

日志主要分为六个部分:进程信息基本信息异常信息线程回溯线程状态二进制映像,具体位置已经标记在上述文件中。

日志组成分析:

在上述六个部分中,我们最需要关注的是异常信息和线程回溯的内容。

1.进程信息:发生crash进程的相关信息

Hardware Model: 标识设备类型

Process:应用名称

Path所在路径

Identifier程序ID

Version版本号

Code Type处理器架构

2.基本信息:给出了一些基本信息,包括闪退发生的日期和时间,设备的iOS版本。

3.异常信息:崩溃时抛出的异常类型,还能看到异常编码和抛出异常的线程。

Exception Type: EXC_BAD_ACCESS (SIGSEGV)

Exception Subtype: KERN_INVALID_ADDRESS at0x006e006e00000010

Triggered by Thread:  7

Exception Type异常类型:通常包含Signal信号 和 EXC_BAD_ACCESS等。

Exception Codes:异常编码:

Crashed Thread:发生Crash的线程id

注:

具体信号说明参见iOS异常捕获

详细的异常编码代表的含义请参考:Hexspeak

因此我们可以确定本次崩溃原因是内存访问错误

4.线程回溯:回溯是闪退发生时所有活动帧清单。它包含闪退发生时调用函数的清单。

实际上我们直接从iPhone中导出的崩溃日志应该是一串地址表示的,如下:

AppName 0x0000000100205280 0x0000000100028000 + 1954432

AppName 0x00000001002ae59c 0x0000000100028000 + 2647440

大家可以通过symbolicatecrash命令和dSYM文件将最后的两列解析为具体的方法名和行数。(具体使用方法大家可以自行查找)

在这里我们就可以看到详细的方法名,这样就能帮助开发同学定位到具体位置。

5.线程状态:闪退时寄存器中的值。一般不需要这部分的信息,因为回溯部分的信息已经足够让你找出问题所在。

6.二进制映像:闪退时已经加载的二进制文件。

低内存崩溃:

因为低内存崩溃日志与普通崩溃日志略有不同,所以本教程特别分开说明一下。

iOS设备检测到低内存时,虚拟内存系统发出通知请求应用释放内存。这些通知发送到所有正在运行的应用和进程,试图收回一些内存。

如果内存使用依然居高不下,系统将会终止后台线程以缓解内存压力。如果可用内存足够,应用将能够继续运行而不会产生崩溃报告。否则,应用将被iOS终止,并产生低内存崩溃报告。低内存崩溃日志上没有应用线程的堆栈回溯。相反,上面显示的是以内存页数为单位的各进程内存使用量。被iOS因释放内存页终止的进程名称后面你会看到jettisoned 字样。如果看到它出现在你的应用名称后面,说明你的应用因使用太多内存而被终止了。

低内存崩溃日志看起来像这样:

当应用发生低内存闪退时,你必需看看应用中内存使用的方式,以及是如何处理低内存警告的。你可以使用Instruments工具中使用Allocations 和 Leaks来发现内存分配问题和内存泄漏问题。如果你不知道如何利用Instruments 检查内存问题。

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

推荐阅读更多精彩内容