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

相关推荐
AlienZHOU4 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
狗头大军之江苏分军6 小时前
《潮水漫过十七岁》开学了
后端
苏三说技术7 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong7 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno7047 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc7 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
aramae8 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
IT_陈寒9 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
分支预测失败9 小时前
RISC-V 时间子系统深度专题:mtime 访问路径、SBI 定时器与 Linux tickless 协同
后端
65岁退休Coder9 小时前
PI Agent 开发一个生产级 Harness
后端·node.js·agent