完整指南: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 检查内存问题。

相关推荐
用户83562907805118 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs18 小时前
Go语言第二章(小无相功)
后端·go
用户83562907805118 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k18 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花18 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生18 小时前
Xiuno BBS X版 用户封禁系统
后端
karry_k18 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
ServBay19 小时前
不会写代码也能建站?AI 时代,非技术创始人如何从零搭建自己的 Web 项目
后端·mcp
Moladev19 小时前
如何在 Electron 中接入 OpenAI 兼容的大模型 API:Snaptium 的主进程代理实践
后端
Oneslide19 小时前
根分区爆满却找不到大文件?深度解析 Linux df 与 du 不一致的经典故障
后端