应用程序在iPhone上运行
Xcode程序中要导入开发证书
iPhone的UDID
iPhone连接Mac,在finder中点击iPhone查看UDID
开发者账号添加设备
在Devices中添加设备
iPhone打开开发者模式
设置-隐私与安全性-开发者模式(最底部)
信任App
设置-通用-VPN与设备管理
查看Crash
Xcode查看
Window -> Organizer -> Reports -> Crashes
iPhone查看
设置 -> 隐私与安全性 -> 分析与改进 -> 分析数据 -> 根据文件名查找.ips文件
Crash解析
异常类型
EXC_ARITHMETIC 执行了无效的算数问题(除以零或浮点数的错误)
EXC_BAD_ACCESS 内存访问的问题(野指针)
EXC_BAD_ACCESS (SIGBUS) 总线问题(访问有效地址,访问异常)
EXC_BAD_ACCESS (SIGSEGV) 内存分割错误(访问无效或越界地址)
EXC_BREAKPOINT (SIGTRAP) 断点异常,进程违反要求或超时(! 强行解开可选值nil)【ARM处理器】
EXC_BAD_INSTRUCTION (SIGILL) 断点异常,进程违反要求或超时(as! 强制向下转换失败)【x86_64处理器】
EXC_CRASH(SIGABRT) 收到一个终止信号,进而调用abort()函数退出(语言异常、配置错误)
EXC_CRASH (SIGKILL) 操作系统终止该进程(后台任务违反要求...)
EXC_CRASH (SIGQUIT) 应另一个进程请求而终止(进程违规或超时)
EXC_CRASH (SIGSYS) 系统调用了错误的参数
EXC_CRASH (SIGTERM) 软件中断
EXC_GUARD 动了受保护资源(文件描述符)
EXC_RESOURCE 进程超过资源消耗限制,操作系统终止该进程(CPU超时、内存问题...)
crash文件重点
Exception Type: 异常名称
Exception Codes: 异常编码
Termination Reason: 终止原因
Terminating Process: 终止过程
Triggered by Thread: 出错的线程
// 以线程0为例
Thread 0:
栈帧编号 函数所在的二进制名称 正在执行的机器码地址 应用函数 + 函数入口到该函数的偏移(如果有对应的dsYM文件,文件名和行号)
Thread 0 crashed with ARM Thread State (64-bit): 崩溃时CPU各寄存器的值
Binary Images: 二进制包信息
二进制包随机地址 二进制包名 CPU指令集 唯一标识二进制映像的生成UUID 二进制包所在磁盘路径