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 检查内存问题。