iOS崩溃日志的处理
2016-10-11 11:48
134 查看
在处理iOS崩溃日志之前我们先来了解一下崩溃日志里面的一些东西:
第一部分:进程信息Incident Identifier: D48383A7-0EA6-48C1-B623-4D798CEXXXXX
CrashReporter Key: 81f2c9c2093808a1832227d2b146164108f2bxxx
Hardware Model: iPhone8,2
Process: guizhouXXX [3388]
Path: /private/var/containers/Bundle/Application/F3D1AE65-1EFB-423C-AE12-E6DC3FA88XXX/guizhouXXX.app/guizhouXXX
Identifier: com.XXX.XXXXX
Version: 1 (1.1.5)
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
Coalition: com.XXX.XXXXX [949]
第二部分:基本信息
Date/Time: 2016-09-30 11:40:14.5463 +0800
Launch Time: 2016-09-29 18:03:33.8821 +0800
OS Version: iPhone OS 10.0.1 (14A403)
Report Version: 104第二部分的信息不用多说,大家应该都能看懂
第三部分:异常信息,这一部分比较重要,这一部分告诉你崩溃的类型,以及崩溃的线程、异常编码等...Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
第四部分:进程信息,以及崩溃的进程
从进程信息中我们可以明确的看到是那一个进程崩溃了,以及崩溃的时候加载了那些库,
看了这些崩溃信息我们并不知道是崩溃在哪一个文件的那一行代码,下面介绍如何处理崩溃日志。
一、首先我们需要找到和崩溃日志相对应的dSYM文件,这个文件很好找,一行代码解决cd ~/Library/Developer/Xcode/Archives/yyyy-mm-dd/appname.xcarchive/dSYMs/appname.app.dSYM/Contents/Resources/DWARF然后在当前文件下执行
atos -arch arm64 -o guizhouXXX
0x00000001000e5134
这里需要讲解一下这是使用arm64还是arm7在第一部分我们就可以看到CPU对应的是arm64就是用arm64,是arm7就使用arm7,地址就是崩溃线程应用名称对应的地址,
执行过后就能获取到是哪一个文件的那一行出现 崩溃,一般在处理崩溃日志之前我们需要查看一下崩溃日志的Incident Identifier是否和dSYM的UUID是否相同,
二、如何查看dSYM的UUID
dwarfdump --uuid xx.app.dSYM,执行这段代码就能得到UUID一般会等到两个UUID这两个UUID分别是arm64和arm7的。
第一部分:进程信息Incident Identifier: D48383A7-0EA6-48C1-B623-4D798CEXXXXX
CrashReporter Key: 81f2c9c2093808a1832227d2b146164108f2bxxx
Hardware Model: iPhone8,2
Process: guizhouXXX [3388]
Path: /private/var/containers/Bundle/Application/F3D1AE65-1EFB-423C-AE12-E6DC3FA88XXX/guizhouXXX.app/guizhouXXX
Identifier: com.XXX.XXXXX
Version: 1 (1.1.5)
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
Coalition: com.XXX.XXXXX [949]
Incident Identifier:崩溃日志的唯一标识
CrashReporter Key:与设备标识相对应的唯一键值。
Hardware Model:设备类型
Process: guizhouXXX [3388]:应用名称[闪退时的进程ID]
第二部分:基本信息
Date/Time: 2016-09-30 11:40:14.5463 +0800
Launch Time: 2016-09-29 18:03:33.8821 +0800
OS Version: iPhone OS 10.0.1 (14A403)
Report Version: 104第二部分的信息不用多说,大家应该都能看懂
第三部分:异常信息,这一部分比较重要,这一部分告诉你崩溃的类型,以及崩溃的线程、异常编码等...Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
第四部分:进程信息,以及崩溃的进程
Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x00000001919b2014 0x191993000 + 126996 1 libsystem_pthread.dylib 0x0000000191a79460 0x191a74000 + 21600 2 libsystem_c.dylib 0x00000001919263f4 0x1918c3000 + 406516 3 libc++abi.dylib 0x00000001913f12d4 0x1913f0000 + 4820 4 libc++abi.dylib 0x000000019140ecc0 0x1913f0000 + 126144 5 libobjc.A.dylib 0x000000019141c844 0x191414000 + 34884 6 libc++abi.dylib 0x000000019140b66c 0x1913f0000 + 112236 7 libc++abi.dylib 0x000000019140b234 0x1913f0000 + 111156 8 libobjc.A.dylib 0x000000019141c71c 0x191414000 + 34588 9 CoreFoundation 0x00000001928be0bc 0x1928b5000 + 37052 10 GraphicsServices 0x0000000194341198 0x194335000 + 49560 11 UIKit 0x0000000198897818 0x19881d000 + 501784 12 UIKit 0x0000000198892550 0x19881d000 + 480592 13 guizhouXXX 0x00000001000e5134 0x100038000 + 708916 14 libdyld.dylib 0x00000001918a05b8 0x19189c000 + 17848 Thread 1 name: com.apple.uikit.eventfetch-thread Thread 1: 0 libsystem_kernel.dylib 0x000000019199416c 0x191993000 + 4460 1 libsystem_kernel.dylib 0x0000000191993fdc 0x191993000 + 4060 2 CoreFoundation 0x0000000192991cec 0x1928b5000 + 904428 3 CoreFoundation 0x000000019298f908 0x1928b5000 + 895240 4 CoreFoundation 0x00000001928be048 0x1928b5000 + 36936 5 Foundation 0x00000001933ccb1c 0x1933c0000 + 51996 6 Foundation 0x00000001933ed60c 0x1933c0000 + 185868 7 UIKit 0x000000019920ce6c 0x19881d000 + 10419820 8 Foundation 0x00000001934ca50c 0x1933c0000 + 1090828 9 libsystem_pthread.dylib 0x0000000191a77860 0x191a74000 + 14432 10 libsystem_pthread.dylib 0x0000000191a77770 0x191a74000 + 14192 11 libsystem_pthread.dylib 0x0000000191a74dbc 0x191a74000 + 3516
从进程信息中我们可以明确的看到是那一个进程崩溃了,以及崩溃的时候加载了那些库,
看了这些崩溃信息我们并不知道是崩溃在哪一个文件的那一行代码,下面介绍如何处理崩溃日志。
一、首先我们需要找到和崩溃日志相对应的dSYM文件,这个文件很好找,一行代码解决cd ~/Library/Developer/Xcode/Archives/yyyy-mm-dd/appname.xcarchive/dSYMs/appname.app.dSYM/Contents/Resources/DWARF然后在当前文件下执行
atos -arch arm64 -o guizhouXXX
0x00000001000e5134
这里需要讲解一下这是使用arm64还是arm7在第一部分我们就可以看到CPU对应的是arm64就是用arm64,是arm7就使用arm7,地址就是崩溃线程应用名称对应的地址,
执行过后就能获取到是哪一个文件的那一行出现 崩溃,一般在处理崩溃日志之前我们需要查看一下崩溃日志的Incident Identifier是否和dSYM的UUID是否相同,
二、如何查看dSYM的UUID
dwarfdump --uuid xx.app.dSYM,执行这段代码就能得到UUID一般会等到两个UUID这两个UUID分别是arm64和arm7的。
相关文章推荐
- 苹果审核返回崩溃日志 iOS .crash文件处理 symbolicatecrash
- iOS上线后程序崩溃日志处理-- Crashlytics
- iOS--上线被拒如何从苹果返回的崩溃日志iOS.crash文件处理找崩点(看这篇就懂了)
- iOS应用崩溃日志揭秘
- iOS应用崩溃日志分析
- iOS应用崩溃日志揭秘
- iOS应用崩溃日志揭秘2
- IOS-处理异常崩溃(摘自iPhone Tutorials)
- iOS应用崩溃日志揭秘
- iOS应用崩溃日志分析
- iOS应用崩溃日志分析
- iOS应用崩溃日志分析
- Android中处理崩溃异常和记录日志
- iOS应用崩溃日志分析
- iOS应用崩溃日志揭秘
- iOS应用崩溃日志分析
- iOS崩溃日志分析
- ios 开发遇到崩溃时的处理
- iOS应用崩溃日志揭秘
- iOS应用崩溃日志分析