美文网首页
iOS Crash log 分析

iOS Crash log 分析

作者: 呆呆滴木木菇凉 | 来源:发表于2018-04-24 14:37 被阅读0次

    日志输出:

    Incident Identifier: F68C10CC-EE66-4442-803F-465A386D319D
    CrashReporter Key:   63be0bf5b77e2cd4539491a3e10a7339cfedc26f
    Hardware Model:      iPhone6,2
    Process:             Community10000v6 [9140]
    Path:                /private/var/containers/Bundle/Application/E4DA7363-CFEF-41B7-A199-7607935DD0F5/Community10000v6.app/Community10000v6
    Identifier:          cn.dxwt.Community10000
    Version:             6019 (6.0.1)
    Code Type:           ARM-64 (Native)
    Role:                Unspecified
    Parent Process:      Exited process [9137]
    Coalition:           cn.dxwt.Community10000 [2047]
    
    
    Date/Time:           2018-03-06 13:33:10.2770 +0800
    Launch Time:         2018-03-06 13:30:16.5038 +0800
    OS Version:          iPhone OS 10.1.1 (14B100)
    Report Version:      104
    
    Exception Type:  EXC_CRASH (SIGABRT)
    Exception Codes: 0x0000000000000000, 0x0000000000000000
    Exception Note:  EXC_CORPSE_NOTIFY
    Triggered by Thread:  0
    
    Filtered syslog:
    None found
    
    Thread 0 Crashed:
    0   dyld                            0x0000000100675cd8 __abort_with_payload + 8
    1   dyld                            0x0000000100675668 abort_with_payload_wrapper_internal + 100
    2   dyld                            0x00000001006756b0 fcntl + 0
    3   dyld                            0x0000000100654514 dyld::fastBindLazySymbol+ 17684 (ImageLoader**, unsigned long) + 0
    4   dyld                            0x00000001006569a8 dyld::_main+ 27048 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 4072
    5   dyld                            0x0000000100651044 _dyld_start + 68
    
    Thread 0 crashed with ARM Thread State (64-bit):
        x0: 0x0000000000000006   x1: 0x0000000000000001   x2: 0x000000016fdca120   x3: 0x00000000000000a7
        x4: 0x000000016fdc9d20   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x00000000000006d0
        x8: 0x0000000000000020   x9: 0x0000000000000009  x10: 0x2f7070612e367630  x11: 0x726f77656d617246
       x12: 0x6d616c412f736b72  x13: 0x72662e657269666f  x14: 0x2f6b726f77656d61  x15: 0x7269666f6d616c41
       x16: 0x0000000000000209  x17: 0x0000000000090000  x18: 0x0000000000000000  x19: 0x0000000000000000
       x20: 0x000000016fdc9d20  x21: 0x00000000000000a7  x22: 0x000000016fdca120  x23: 0x0000000000000001
       x24: 0x0000000000000006  x25: 0x0000000100681ab8  x26: 0x0000000000000000  x27: 0x58802996eaa800fa
       x28: 0x0000000100681000   fp: 0x000000016fdc9cf0   lr: 0x0000000100675668
        sp: 0x000000016fdc9cb0   pc: 0x0000000100675cd8 cpsr: 0x00000000
    
    Binary Images:
    0x100034000 - 0x1004d3fff Community10000v6 arm64  <eb4cf9d6551c37e489f6a2aaf66fc09e> /var/containers/Bundle/Application/E4DA7363-CFEF-41B7-A199-7607935DD0F5/Community10000v6.app/Community10000v6
    0x100650000 - 0x10067ffff dyld arm64  <f5a894bbb0cc38b1930add2172007394> /usr/lib/dyld
    0x191f12000 - 0x191f67fff libc++.1.dylib arm64  <ad5eb3d0e134370ab9ab52e3979ac239> /usr/lib/libc++.1.dylib
    0x19286b000 - 0x19287bfff libz.1.dylib arm64  <a8ab1654147738bda28160886a3a5df1> /usr/lib/libz.1.dylib
    0x193a42000 - 0x193b56fff libsqlite3.dylib arm64  <a54037ad22f1329998d318a227192323> /usr/lib/libsqlite3.dylib
    0x1a4a21000 - 0x1a4a73fff libstdc++.6.dylib arm64  <eb4141a9e0e03542b9b7105dd065b2ac> /usr/lib/libstdc++.6.dylib
    
    EOF
    

    1. 设备信息

    Incident Identifier: crash的ID

    CrashReporter Key: crash 的设备ID

    Hardware Model: 手机的型号 (iPhone6,2代表iPhone5s)

    Process: App的名称 (该App的进程ID)

    Path: APP 的位置 路径

    Identifier: bundle ID

    Version: APP的版本号

    Code Type: app的应用架构

    Date/Time: crash发生的时间

    Launch Time: 进入应用的时间

    OS Version: iOS系统的版本

    如果产品上线之后, 回收集大量的Crash Log日志文件, 可以对Crash文件里面的手机型号,版本号, 手机型号, iOS系统版本,进行分类, 可以获得更多的信息, 更好的解决bug甚至未知的bug具体原因。

    2.异常信息

    Exception Type: EXC_CRASH (SIGABRT) 异常的类型

    Exception Codes: 0x0000000000000000, 0x0000000000000000 异常出错的代码

    Exception Note: EXC_CORPSE_NOTIFY // 异常通知

    Triggered by Thread: 0 // 异常发生的线程(0代表主线程, 其他为主线程)

    常见的Exception Codes代码类型

    Exception Codes: 常见代码有以下几种

    0x8badf00d错误码:Watchdog超时,意为“ate bad food”。
    0xdeadfa11错误码:用户强制退出,意为“dead fall”。
    0xbaaaaaad错误码:用户按住Home键和音量键,获取当前内存状态,不代表崩溃。
    0xbad22222错误码:VoIP应用(因为太频繁?)被iOS干掉。
    0xc00010ff错误码:因为太烫了被干掉,意为“cool off”。
    0xdead10cc错误码:因为在后台时仍然占据系统资源(比如通讯录)被干掉,意为“dead lock”
    
    常见的Exception Type异常类型的信息:
    1.EXC_BAD_ACCESS

    此类型是最常见的crash, 通常用于访问了不该访问的内存导致的,一般 EXC_BAD_ACCESS后面的()还会带有补充信息

    SIGSEGV:通常由于重复释放对象导致, 一般在ARC以后很少见到

    SIGABRT: 收到Abort信号退出, 通常Foundtion库中的容器为了保护状态正常会做一些检测, 例如插入nil到数据中等会遇到此类错误.

    野指针错误形式在Xcode中通常表现为:Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误。因为你访问了一块已经不属于你的内存。

    SEGV(Segmentation Violation): 代表无效内存地址, 比如空指针, 未初始化指针, 栈溢出等.

    SIGBUS:总栈错误, 与SIGSEGV不同的是,SIGSEGV访问的是无效的地址, 而SIGBUS访问的是有效的地址, 但是总栈访问异常(如地址对齐问题)

    SIGILL: 尝试执行非法的指令, 可能不被识别或者没有权限

    SIGFPE: 数学计算相关问题, 比如除零操作

    SIGIPIPE: 管道另一端没有进程接手数据

    2. EXC_BAD_INSTRUCTION

    此类异常通常由于线程执行非法指令导致

    3. EXC_ARITHMETIC

    除零错误会抛出此类异常

    3.回溯(Backtrace)

    这部分列出了发生Crash时线程的调用栈,一般根据这个代码就能找到具体的crash问题。

    Thread 0 Crashed:
    ...
    

    4.线程状态(Thread State)

    这部分列出了发生Crash的线程的状态,即寄存器和寄存器的值。

    Thread 0 crashed with ARM Thread State (64-bit):
    ...
    

    5.二进制映像(Binary Images)

    这部分列出了当Crash发生时被装载进进程内存空间的依赖库或者模块。

    Binary Images:
    ...
    

    iOS crash官方文档

    相关文章

      网友评论

          本文标题:iOS Crash log 分析

          本文链接:https://www.haomeiwen.com/subject/ivljlftx.html