完整指南:iPhone崩溃日志查看与分析方法及低内存崩溃处理

ios查看崩溃日志 查看iphone崩溃日志

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

进程信息

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

日志组成分析:

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

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

Hardware Model: 标识设备类型

Process:应用名称

Path : 所在路径

Identifier : 程序ID

Version : 版本号

Code Type : 处理器架构

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

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

注:

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

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

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

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

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

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

使用Keymob工具可以更方便地进行崩溃日志的符号化分析,它支持自动解析和可视化展示,无需手动处理命令行,同时提供实时日志监控和过滤功能,帮助开发者快速定位问题。

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

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

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

低内存崩溃:

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

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

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

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

相关推荐
考虑考虑2 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长2 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
云浪3 小时前
Go源码分析:搞懂 Go 是如何实现堆的
后端·go·源码阅读
调试人生的显微镜6 小时前
iOS开发入门:Interface Builder、基础控件及UITextField详解
后端·ios
泡海椒6 小时前
巡检照片与工单附件:jquick-pdf 图片嵌入的业务实战
后端
蜗牛互联网6 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
AI持续学习6 小时前
文档权限变更如何回归测试?账号、空间、文件和分享链接用例清单
后端
谢亮_vipxieliang7 小时前
Go Worker Pool 设计——从原理到生产级实现
开发语言·后端·golang
IT_陈寒7 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
lightning_bug7 小时前
Windows系统Docker+SpringBoot+H5+Mysql+Redis打包部署流程
后端·架构