Objective-cInstrument调试

INSTRUMENTS调试工具的使用(九)

2017-06-24  本文已影响188人  刀客传奇

版本记录

版本号 时间
V1.0 2017.06.24

前言

我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个很好的检查工具,可以检测内存泄漏。还可以查看哪一个方法比较耗时。还可以检测离屏渲染等等,随后的几篇我们就说一下这个工具的使用。感兴趣的可以看这几篇。
1.INSTRUMENTS调试工具的使用(一)
2.INSTRUMENTS调试工具的使用(二)
3.INSTRUMENTS调试工具的使用(三)
4.INSTRUMENTS调试工具的使用(四)
5.INSTRUMENTS调试工具的使用(五)
6.INSTRUMENTS调试工具的使用(六)
7.INSTRUMENTS调试工具的使用(七)
8.INSTRUMENTS调试工具的使用(八)

这一篇就先说一下绘图、内存、系统、输入输出相关等

二十一、Graphics Instruments[绘图相关]

该部分的 instruments 工具收集和绘图相关的数据。

核心动画(Core Animation)

Core Animation instrument 工具测量一个运行在 iOS 设备上面的进程每秒的核 心动画帧的数量,以及屏幕外的帧计数。
  此外,Core Animation instrument 工具可以 供一个可视化的 示(hints)来帮 助你理解内容是如何被渲染到屏幕的。该 instrument 工具包含了许多可选的选项来 允许你选择特定类型的渲染 示(rendering hints)。 示工作在设备上的任何程序。 没有必要记录样本数据来激活提示。但你关闭 Instruments 文档或删除该 instrument 工具时, 示会被伴随关闭。如果有一个 OpenGL 的表层被显示,渲染 示不会影响 该表层。

该 instrument 工具包含以下的渲染提示:

跟踪面板可以显示每秒的帧数,扩展详细面板显示每个样本点的分析。

OpenGL驱动器(OpenGL Driver)

OpenGL Driver instrument 工具样本分析 OpenGL 的统计信息。该 instrument 工 具可以运行在单个进程或所有当前系统运行的进程上面。

该 instrument 工具捕获以下信息:

OpenGL ES驱动器(OpenGL ES Driver)

OpenGL ES Driver instrument 工具在 iOS 设备上查询 GPU 驱动器来给单独进程 进行 OpenGL 样本统计分析。该 instrument 工具帮你确定你已经使用了设备的 OpenGL 和 GPU 的效率。

GPU 的硬件由两部有效的组合:平铺器(Tiler)和渲染器(Renderer)。一个场景被 平铺并渲染。平铺器和渲染器组件通常工作在不同的场景。每个组件的利用率可能达 到 100%。

平铺器和渲染器利用率对于确定瓶颈很有帮助。渲染器利用率低下时意味着进程正等待被平铺,此时降低场景的复杂度可能对缓解利用率问题。平铺器和渲染器利用 率低下时暗示程序的其他地方出现了瓶颈。

该 instrument 工具捕获以下信息:

OpenGL ES分析器(OpenGL ES Analyzer)

应用程序每次调用 OpenGL ES 框架时,该 instrument 工具跟踪调用并记录时间、 时长、回溯跟踪和其他参数,并把信息更新到主机上。该 instrument 工具分析 OpenGL 命令流来计算有用的性能分析数据并驱动专业系统,然后反过来提供修正建议和性能建议。

比如,该 instrument 工具可能会告诉你它检测到没有使用顶点缓冲区对象的顶点数据数组。顶点数组是保存在主内存的客户端数据。如果把这些数据以顶点缓冲区 对象上传到 GPU 的话将会更加高效。尽管它的实现有点复杂,但性能提高是显著的。

该 instrument 工具 供以下视图:

但你双击分析结果或跟踪功能的回溯跟踪符合时,将会显示相关的源码。 覆盖部分是用来绕过在图形管道的阶段。这可让你隔离问题并找到你的代码中的瓶颈。


二十二、 Input/Output Instruments[输入输出相关]

以下的 instrument 工具收集和 I/O 操作相关的数据。

读/写(Reads/Wirtes)

Reads/Writes instrument 工具记录文件的读取和写入操作。该 instrument 工具 可以运行在单个进程或系统当前运行的所有进程之上。该 instrument 工具的实现使 用了 DTrace,并可以导入 DTrace 脚本。它收集关于每个读取和写入函数的相关信息, 包括 read、write、pread 和 pwrite。

该 instrument 工具捕获以下信息:

跟踪面板可以被设置来显示以下的数据:


二十三、Master Tracks Instruments[界面操作跟踪相关]

主跟踪轨迹(Master Tracks)部分包含了用户界面的记录器,它可以让你记录并回放程序中用户的一系列动作。

用户界面(User Interface)

User Interface instrument 工具可以加载一个程序或附加到一个进程之上,并 记录你和界面之间的交互。你可以多次回放这些记录,并运行任何其他你选择的 instruments 工具进行这样的操作。你可以使用该instrument 工具来创建作为你质量保证计划的一部分的用户界面的可重复测试,并捕获偶然发生的错误。


二十四、Memory Instruments[内存相关]

该部分的 instruments 工具跟踪内存使用情况。

共享内存(Shared Memory)

Shared Memory instrument 工具记录共享内存的打开和取消链接。该 instrument 工具可以运行在单个进程或系统当前正在运行的所有进程之上。该 instrument 工具 的实现使用了 DTrace 并可以导入 DTrace 脚本。它收集关于每个共享内存的访问信息, 包括 shm_open 和 shm_unlink。

该 instrument 工具捕获以下信息:

跟踪面板可以被设置来显示以下的数据:

分配内存(Allocations)

Allocations instrument 工具跟踪应用的内存分配情况。该 instrument 工具要求你加载一个进程,以便它能收集进程开始之后的数据。

该 instrument 工具捕获以下信息:

当你鼠标移动到详细面板上面的类别名称上时,会在类别名称的旁边显示一个更多信息的按钮。单击该按钮会显示关于该类别上的对象的详细信息,包含以下属性:

对于任一这些事件,你可以打开扩展详细面板来查看每个对象内存分配的栈跟 踪,包括分配的类型和事件发生的时间。
  对于特定对象(或内存块)的实例,你可以单击该对象地址列的更多信息按钮来 查看对象相关的内存分配事件。对于每个内存分配事件,该 instrument 工具显示以下信息:

为了进一步的过滤详细面板的信息,你可以配置 Allocation Lifespan options(内存分配存活期选项)。这些选项可以让你过滤基于以下标准的分配事件:

Allocations instrument 工具的检查器可以让你配置 instrument 工具跟踪信息 的方法。你可以从该检查器设置一下选项:

关于 Allocations instrument 工具的更多额外信息,参阅“使用 Allocations Instrument 工具分析数据(Analyzing Data with the Allocations Instrument)”。

内存泄露(Leaks)

Leaks instrument 工具检查进程堆泄露的内存。你可以使用该 instrument 工具 配合 Allocations instrument 工具来获取内存地址的历史记录。该 instrument 工具 要求你加载一个进程以便它可以从进程启动时收集数据。

该 instrument 工具捕获以下信息:

详细面板的每个视图模式以轻微不同的函数显示泄露的数据。在列表模式下,该 instrument 工具显示每个泄露的百分比,而每个内存泄露有助于发现内存泄露的总 数。在大纲模式下,数据被重组以便你可以查看给定的符号有多少内存泄露。对于任 何模式的条目,在扩展详细面板显示内存泄露引发的深入栈跟踪信息。
  关于 Leaks instrument 工具的更多额外信息,参阅“查找内存泄露(Looking for Memory)”。


二十五、System Instruments[系统相关]

该部分的 instruments 工具收集系统活动和资源的数据。

时间分析器(Time Profiler)

  Time Profiler instrument 工具在规定的间隔内停止一个 Mac OS X 的程序并记 录该程序内部线程的栈跟踪信息。你可以使用这些信息来确定花费在你程序上面的执 行时间并 升你的代码来减少运行时间。不像很多 instruments 工具,Time Profiler 工具不需要使用 DTrace 探针来实现功能。Time Profiler 工具运行在单个进程或所 有进程之上。

在采样期间,该 instrument 工具捕获以下信息:

  Time Profiler 工具让你可以以不同的方式来查看这些信息。在列表模式下,你 可以查看按照时间顺序采集的样本,它显示你代码执行的顺序。在大纲模式下,Time Profiler 提供了你程序调用栈的树形视图并显示了调用栈里对应调用函数的样本数量。

  为了显示一个函数的详细调用栈,你可以在大纲模式下扩展对应的项目或选择一 个函数并打开扩展详细面板。在大纲模式下,你可以通过单击 Option 键和条目的扩 展三角形来扩大给定条目的整个调用栈。

  跟踪面板默认显示每个样本时间点的栈深度。该视图对于确定你代码执行的情况 很有帮助。因为它不像两个不同的执行路径结果产生相同的栈深度,当你查看图形的 重复结构时,它可能是相同的代码被重复的执行。

   Time Profiler instrument 工具和 Sampler instrument 工具有点类似,但是它 们之间也有很多的不同:

旋转监控器(Spin Monitor)

  Spin Monitor instrument 工具自动采样系统上无响应的应用程序。当一个应用 程序 3 秒或更长内没有从窗口服务器检索事件时,它将会变为无响应的应用程序。在 这段时间内没有响应的应用程序实际上可能会做一些有益的工作,也可能是被挂起。 你可以该 instrument 工具生成的样本信息来修改你的代码以便保证你的程序可以一 直保持及时处理事件。该 instrument 工具可以运行在单个进程或系统当前运行的所 有进程之上。

在采样期间,该 instrument 工具捕获以下信息:

取样(Sampler)

  Sampler instrument 工具在指定的时间间隔内停止一个应用程序并记录应用程 序每个线程的栈跟踪信息。你可以使用这些信息来确定花费你应用程序执行时间的地 方并 高你的代码来减少运行时间。不像许多 instruments 工具,Sampler instrument 工具不要求使用 DTrace 探针来实现功能。该 instrument 工具运行在单个进程之上。
Sampler instrument 工具记录每个样本的以下数据类型:

  Sampler instrument 工具可以让你以不同的方式查看这些信息。在列表模式下, 你可以按照样本被采集的顺序来查看它们,它显示了你代码执行的顺序。在大纲模式 下,Sampler instrument 工具 供了你应用程序调用栈的树型视图,并显示了里面 每个调用函数执行时的样本的数量。
  在研究的一个正在运行程序的性能时,你应该比较函数的影响和函数的执行成 本。如果你的程序花费很长的时间来执行一个低影响的函数,该 instrument 工具可 以标记出该请情况。然后你可以使用样本数据来找出为何你的程序会花费这些时间和 谁调用这些函数,通过这样你可以修复你的代码让它减少被调用的频率。

  跟踪面板默认显示每个样本时间点的栈深度。该视图可以帮助识别你代码当前正在做什么。因为两个不同的执行路径不太可能产生相同的栈深度,所以当你看到图形 有重复的结构时,有可能是同一代码被重复执行了。如果该段代码需要消耗很长时间 来执行,那它就是很好的优化目标。

  关于 Sampler instrument 工具的额外信息,参阅“使用 Sampler Instrument 工 具分析数据部分(Analyzing Data with the Sampler Instrument)”。

进程(Process)

  Process instrument 工具记录由另外进程派生的进程。该 Instrument 工具可以 运行在单个进程或系统所有当前运行的进程之上。该 instrument 工具的实现使用了 DTrace,并可以导入 DTrace 脚本。

该 instrument 工具捕获以下信息:

Process instrument 工具返回这些函数每次调用的信息,包括:

跟踪面板可以被设置来显示以下任何数据:

网络活动监控器(Network Activity Monitor)

  Network Activity Monitor instrument 工具记录电脑网络传输信息。该 instrument 工具可以运行在单个进程或系统当前所有运行的进程之上。跟踪面板可以被设置来默认显示以下网络相关的数据,但你也可以配置它来显示 其他类型的数据。
默认情况下,它显示以下信息:

内存监控器(Memory Monitor)

  Memory Monitor instrument 工具记录进程使用的实际内存和虚拟内存的数量。 该 instrument 工具可以运行在单个进程或系统所有当前运行的进程之上。跟踪面板可以被设置来默认显示以下内存相关的数据,但你也可以配置它来显示 其他类型的数据。
默认情况下,它显示以下的信息:

硬盘监控器(Disk Monitor)

  Disk Monitor instrument 工具记录硬盘的读取和写入操作。该 instrument 工具 可以运行在单个进程或系统所有当前运行的进程之上。跟踪面板可以被设置来默认显示以下和硬盘相关的数据,但你也可以配置它来显 示其他类型的数据。
默认情况下,它显示以下信息:

CPU监控器(CPU Monitor)

  CPU Monitor instrument 工具记录系统的负载。该 instrument 工具可以运行在 单个进程或系统所有当前运行的进程之上。跟踪面板可以被设置来默认显示以下负载值,但你也可以配置它来显示其他类型 的数据。
默认情况下,它显示以下信息:

活动监控器(Activity Monitor)

  Activity Monitor instrument 记录由虚拟内存大小测量的系统负载。该 instrument 工具可以运行在单个进程或系统所有当前运行的进程之上。跟踪面板可以被设置来默认显示以下的负载值,你也可以配置它来显示其他类型 的数据。
默认情况下,它显示以下信息:

后记

未完,待续~~~

太阳
上一篇 下一篇

猜你喜欢

热点阅读