降本增效工具系列(二):IOS 系统 Crash 日志分析实战_crash日志

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

  • 应用中有Bug

从多任务窗口中终止一个暂停的应用程序不会产生崩溃日志。Apple官方认为一旦一个应用被暂停,它有资格被iOS在任何时间终止,因此不会产生崩溃日志。

二、Crash 崩溃报告分析实战

IOS设置-隐私-分析与改进-分析数据中查找当前日期的应用崩溃日志mrcs-2021-08-31-091354.ips,日志内容大致如下:

{"app\_name":"mrcs","timestamp":"2021-08-31 09:13:54.00 +0800","app\_version":"2.1.7","slice\_uuid":"85fda4ca-6eae-3600-91c8-6fa83b827d7a","adam\_id":0,"build\_version":"9","platform":2,"bundleID":"com.\*.\*","share\_with\_app\_devs":0,"is\_first\_party":0,"bug\_type":"109","os\_version":"iPhone OS 14.6 (18F72)","incident\_id":"3ADDB9E3-657A-4ECC-B1B1-377A79F793BB","name":"mrcs"}
Incident Identifier: 3ADDB9E3-657A-4ECC-B1B1-377A79F793BB  //崩溃报告的唯一标识符
CrashReporter Key:   7643d5953a8b0562ded233540a11c1beabbb8b58 //设备标识相对应的唯一键值(并非真正的设备的UDID,为保护隐私iOS6以后已无法获取)
Hardware Model:      iPhone10,3 //发生Crash的设备类型
Process:             mrcs [8968] //Crash的进程名称,通常都是我们的App的名字, []里面是当时进程的ID
Path:                /private/var/containers/Bundle/Application/A09D22A5-324F-4686-964B-51AE831927B7/mrcs.app/mrcs //可执行程序在手机上的存储位置,注意路径是到x.app/x,x.app其实是作为一个Bundle的,真正的可执行文件其实是Bundle里面的x
Identifier:          com.\*.\* //App的Indentifier,通常为“com.xxx.yyy”
Version:             9 (2.1.7) //App的版本号,由Info.plist中
Code Type:           ARM-64 (Native) //App的CPU架构
Role:                Foreground
Parent Process:      launchd [1] //当前进程的父进程,由于iOS中App通常都是单进程的,一般父进程都是launchd
Coalition:           com.\*.ccmsm [421]


Date/Time:           2021-08-31 09:13:53.8890 +0800 //Crash发生的时间
Launch Time:         2021-08-31 09:13:18.1164 +0800 //系统登陆时间
OS Version:          iPhone OS 14.6 (18F72) //系统版本,括号内的数字代表的时Bulid号
Release Type:        User
Baseband Version:    6.71.01
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT) //异常类型
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  21

Application Specific Information:
abort() called
...................................
Thread 21 name:  Dispatch queue: com.facebook.react.ShadowQueue
Thread 21 Crashed:
//编号 二进制库名 调用方法的地址 基本地址 + 偏移
0   libsystem_kernel.dylib        	0x00000001d73517b0 0x1d732a000 + 161712
1   libsystem_pthread.dylib       	0x00000001f39dc9c0 0x1f39d2000 + 43456
2   libsystem_c.dylib             	0x00000001b4243a44 0x1b41d0000 + 473668
3   mrcs                          	0x0000000102dd4e18 0x102c08000 + 1887768
4   mrcs                          	0x0000000102dd4d9c 0x102c08000 + 1887644
5   mrcs                          	0x0000000102ddd034 0x102c08000 + 1921076
6   mrcs                          	0x0000000102ddd0d0 0x102c08000 + 1921232
7   mrcs                          	0x0000000102ddd0d0 0x102c08000 + 1921232
8   mrcs                          	0x0000000102ddd0d0 0x102c08000 + 1921232
9   mrcs                          	0x0000000102ddd0d0 0x102c08000 + 1921232
10  mrcs                          	0x0000000102ddd0d0 0x102c08000 + 1921232
11  mrcs                          	0x0000000102dda324 0x102c08000 + 1909540
12  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
13  mrcs                          	0x0000000102ddda4c 0x102c08000 + 1923660
14  mrcs                          	0x0000000102dd96e8 0x102c08000 + 1906408
15  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
16  mrcs                          	0x0000000102ddda4c 0x102c08000 + 1923660
17  mrcs                          	0x0000000102dd96e8 0x102c08000 + 1906408
18  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
19  mrcs                          	0x0000000102ddda4c 0x102c08000 + 1923660
20  mrcs                          	0x0000000102dd96e8 0x102c08000 + 1906408
21  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
22  mrcs                          	0x0000000102dddf38 0x102c08000 + 1924920
23  mrcs                          	0x0000000102dd9e14 0x102c08000 + 1908244
24  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
25  mrcs                          	0x0000000102ddb598 0x102c08000 + 1914264
26  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
27  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
28  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
29  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
30  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
31  mrcs                          	0x0000000102ddb598 0x102c08000 + 1914264
32  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
33  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
34  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
35  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
36  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
37  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
38  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
39  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
40  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
41  mrcs                          	0x0000000102ddb598 0x102c08000 + 1914264
42  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
43  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
44  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
45  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
46  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
47  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
48  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
49  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
50  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
51  mrcs                          	0x0000000102dda940 0x102c08000 + 1911104
52  mrcs                          	0x0000000102dd8908 0x102c08000 + 1902856
53  mrcs                          	0x0000000102ddc09c 0x102c08000 + 1917084
54  mrcs                          	0x0000000102cfe104 0x102c08000 + 1007876
55  mrcs                          	0x0000000102cf2e10 0x102c08000 + 962064
56  mrcs                          	0x0000000102d0b800 0x102c08000 + 1062912
57  mrcs                          	0x0000000102d0f860 0x102c08000 + 1079392
58  mrcs                          	0x0000000102cd0efc 0x102c08000 + 823036
59  libdispatch.dylib             	0x00000001ab2562b0 0x1ab1f6000 + 393904
60  libdispatch.dylib             	0x00000001ab257298 0x1ab1f6000 + 397976
61  libdispatch.dylib             	0x00000001ab233344 0x1ab1f6000 + 250692
62  libdispatch.dylib             	0x00000001ab233e2c 0x1ab1f6000 + 253484
63  libdispatch.dylib             	0x00000001ab23d66c 0x1ab1f6000 + 292460
64  libsystem_pthread.dylib       	0x00000001f39dd5bc 0x1f39d2000 + 46524
65  libsystem_pthread.dylib       	0x00000001f39e086c 0x1f39d2000 + 59500
Thread 22:
0   libsystem_pthread.dylib       	0x00000001f39e0864 0x1f39d2000 + 59492
//Crash时发生时刻,线程的状态(寄存器中的值)
Thread 21 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
    x4: 0x000000010378c20c   x5: 0x000000016dc98930   x6: 0x000000000000000a   x7: 0x0000000102dd7248
    x8: 0x000000016dc9f000   x9: 0xef6382e5d8fc5092  x10: 0x0000000000000002  x11: 0x00000000fffffffd
   x12: 0x0000010000000000  x13: 0x0000000000000000  x14: 0x0000000000000000  x15: 0x0000000000000000
   x16: 0x0000000000000148  x17: 0x0000000000000002  x18: 0x0000000000000000  x19: 0x0000000000000006
   x20: 0x0000000000006e4b  x21: 0x000000016dc9f0e0  x22: 0x0000000000000000  x23: 0x0000000144f1ff80
   x24: 0x0000000000000002  x25: 0x0000000000000000  x26: 0x0000000000000002  x27: 0x0000000000000000
   x28: 0x0000000000000001   fp: 0x000000016dc98880   lr: 0x00000001f39dc9c0
    sp: 0x000000016dc98860   pc: 0x00000001d73517b0 cpsr: 0x40000000
   esr: 0x56000080  Address size fault
//Crash时刻App加载的所有库,其中第一行是Crash发生时我们App可执行文件的信息,可以看出为arm64,可执行文件包的uuid为c0f……cd65,解析Crash的时候dsym文件的uuid必须和这个一样才能完成Crash的符号化解析。
Binary Images:
0x102c08000 - 0x103933fff mrcs arm64  <85fda4ca6eae360091c86fa83b827d7a> /var/containers/Bundle/Application/A09D22A5-324F-4686-964B-51AE831927B7/mrcs.app/mrcs
0x103d60000 - 0x103dcbfff dyld arm64  <c5d2aaed4aeb3e18a5d2c8b681a2d6eb> /usr/lib/dyld
.....................
EOF

由以上崩溃报告内容可知,Thread * 表示发生Crash的线程调用栈,从上到下分别代表调用顺序,最上面的一个表示抛出异常的位置,依次往下可以看到API的调用顺序。重点由以下内容定位Crash异常类型、错误码、导致异常发生的线程。

Exception Type:  EXC_CRASH (SIGABRT) //异常类型
Exception Codes: 0x0000000000000000, 0x0000000000000000 //异常类型代码
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  21



**对象篇**

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MTY4MzU2LWIxMTdmNzMyNDJlZjAyMDM?x-oss-process=image/format,png)

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MTY4MzU2LWU5ZGY5NGRhODZhZGZjNjY?x-oss-process=image/format,png)

**模块化编程-自研模块加载器**



![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MTY4MzU2LWUyNWEzOGRhNTU1NTBmOGY?x-oss-process=image/format,png)

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MTY4MzU2LTQ5MGM2MTlhOTI5YjY3Y2U?x-oss-process=image/format,png)

18166371)**

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MTY4MzU2LTQ5MGM2MTlhOTI5YjY3Y2U?x-oss-process=image/format,png)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值