版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.06.13 |
前言
我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个很好的检查工具,可以检测内存泄漏。还可以查看哪一个方法比较耗时。还可以检测离屏渲染等等,随后的几篇我们就说一下这个工具的使用。感兴趣的可以看这几篇。
1.INSTRUMENTS调试工具的使用(一)
2.INSTRUMENTS调试工具的使用(二)
3.INSTRUMENTS调试工具的使用(三)
4.INSTRUMENTS调试工具的使用(四)
5.INSTRUMENTS调试工具的使用(五)
6.INSTRUMENTS调试工具的使用(六)
7.INSTRUMENTS调试工具的使用(七)
8.INSTRUMENTS调试工具的使用(八)
9.INSTRUMENTS调试工具的使用(九)
10. INSTRUMENTS调试工具的使用(十)
11. INSTRUMENTS调试工具的使用(十一) —— 简介(一)
12. INSTRUMENTS调试工具的使用(十二) —— 通常任务之启动Instruments(一)
13. INSTRUMENTS调试工具的使用(十三) —— 通常任务之简单了解Instruments(二)
14. INSTRUMENTS调试工具的使用(十四) —— 通常任务之创建、保存和打开跟踪文档(三)
15. INSTRUMENTS调试工具的使用(十五) —— 通常任务之指定目标应用和设备(四)
16. INSTRUMENTS调试工具的使用(十六) —— 通常任务之访问和使用个别仪器(五)
Record, Pause, and Stop Traces - 记录、暂停和停止跟踪
仪器在运行时收集有关您的应用的信息。 本章介绍如何指导仪器收集信息。
Record a Trace - 记录跟踪
当你准备好分析你的应用时,你开始记录。 在记录时,跟踪文档中的instruments将根据其配置监控您的应用。 发生记录时,时间轴窗格和详细信息窗格将更新以提供捕获内容的实时视图。
To begin recording - 开始录制
执行以下操作之一:
- 单击跟踪文档工具栏中的记录按钮。
- 选择
File> Record Trace
(或按Command-R
)。
再次点击Command-R
停止记录。
1. Set Recording Options - 设置录制选项
设置记录选项以改善跟踪文档中的数据收集。 记录前选择延迟时间,要记录的时间长度,要保存的数据量或是否以延迟模式记录数据。
To set the recording options for a trace - 设置跟踪的录制选项
- 1)选择
File> Record Options
打开Record Options
对话框
- 2)根据需要自定义设置
选项包括:
-
Time limit
- 时间限制:仪器将记录数据的最长时间(以秒为单位)。 -
Window limit
- 窗口限制:将被保存的数据的最大持续时间(以秒为单位)。 如果记录的持续时间超过指定窗口限制的时间(例如,超过4秒),则仅保存最近4秒内收集的数据。 -
Deferred mode
- 延迟模式:选择推迟数据分析,直到数据收集完成。 这可以导致更快和更准确的数据收集,因为更多的系统资源针对正在记录的过程。
注意:如果不适用于跟踪文档中的工具或仪器中的首选项配置,则可能禁用此对话框中的某些选项。 要确定选项被禁用的原因,请将鼠标悬停在该选项上几秒钟以查看其工具提示。
OS X 10.7
或更高版本以及iOS 5或更高版本支持Window Limit
。
- 3)点击OK关闭
Record Options
对话框。
Pause a Trace - 暂停跟踪
如有必要,您可以暂停录制并在稍后再次恢复。
To pause an active recording - 暂停活动录制
执行以下操作之一:
- 单击跟踪文档工具栏中的暂停按钮。
- 选择
File> Pause Trace
(或按Shift-Command-R
)。
Stop a Trace - 停止跟踪
一旦记录了所需的数据,请停止记录,以便开始分析收集的数据。
To stop an active recording - 停止活动录制
执行以下操作之一:
- 单击跟踪文档工具栏中的停止按钮。
- 选择
File > Stop Trace
(或按Command-R
)。
Profile from the Dock - Dock中Profile
您可以通过从Dock中的Instruments应用程序图标触发Time Profiler来自动记录后台中的某些事件。
To collect Time Profiler information from the Dock - 从Dock中收集Time Profiler信息
- 1)打开Instruments,按住Control键并点按Dock中的Instruments图标。
- 2)在出现的快捷菜单中,选择进程配置文件开始录制。
选项包括:
-
System Time Profile
- 系统时间分析。 开始分析所有系统进程。 -
Time Profile Specific Process
- 时间分析特定过程。 使用子菜单中的特定应用程序启动Time Profiler
仪器。 -
Automatically Time Profile Spinning Applications
- 自动时间轮廓旋转应用程序。 自动配置文件阻止(旋转)的应用程序在未来。 -
Allow Tracing of Any Process (10 hours)
- 允许追踪任何进程(10小时)。 跟踪在接下来的10个小时内发生的任何过程。 在10个小时内必须输入密码。
注意:以这种方式记录的数据以
.dtps
格式保存到〜/ Library / Application Support / Instruments / Unimported /
。
Profile from Xcode - 从Xcode中Profile
仪器是Xcode开发工作流程的关键组件,您可以在构建和测试您的应用程序时直接从Xcode启动它。
1. Profile from the build and product menus - 构建和产品菜单中的配置文件
Xcode构建菜单允许您运行,测试和分析您的应用程序。 它还可以让你用仪器来分析你的应用程序。
To profile your app from the Xcode build and product menus - 从Xcode构建和产品菜单中分析您的应用程序
1)在Xcode中打开一个应用程序项目。
2)执行以下操作之一:
点击并按住Xcode主窗口中的构建菜单,然后从出现的菜单中选择配置文件。
- 选择
Product > Profile
(orpress Command-I
)
仪器启动,并出现分析模板选择对话框。 请注意,您的应用程序是在目标设备和进程列表中自动选择的。
To use a default template when profiling from the Xcode build and product menus - 从Xcode构建和产品菜单进行分析时使用默认模板
- 1)在Xcode中打开一个应用程序项目。
- 2)执行以下操作之一打开方案编辑器对话框:
- 从Xcode主窗口工具栏中的目标设备列表中选择
Edit Scheme
。
- 从Xcode主窗口工具栏中的目标设备列表中选择
选择
Product > Scheme > Edit Scheme
,或按命令Command–Less Than (<)
。3)在方案编辑器对话框的边栏中单击配置文件。
- 4)从Instrument弹出式菜单中选择所需的分析模板
- 5)点击关闭。
现在,无论何时profile应用程序,Instruments都会自动在您在方案编辑器对话框中选择的模板中打开它,并开始分析。
2. Profile from Xcode gauges while debugging - 在调试过程中从Xcode gauges配置文件
Xcode调试导航器包含几个测量仪,用于在测试和调试时监视应用程序。 这些仪表跟踪各种因素,包括CPU使用率,内存和能量影响,并可以提醒您潜在的问题,这些问题可能会影响性能,功耗等等。 如果您在测试应用程序时发现想要进一步调查的趋势,则可以将监视转换到仪器以进行更详细的分析。
To initiate profiling from an Xcode gauge - 从Xcode测量仪开始分析
1)在Xcode中打开一个应用程序项目并运行它。
2)在您的应用程序正在运行时,通过执行以下操作之一来显示调试导航器:
单击导航器选择栏中的
Debug Navigator
按钮。
- 选择
View > Navigators > Show Debug Navigator (or press Command-6)
。
- 3)在调试导航器中单击所需的量表。
- 4)在主编辑器中单击仪器的仪器配置文件按钮。
请注意,并非每个Xcode仪表在Instruments按钮中都有个Profile。 例如,Energy Impact
测量仪包含几个用于启动仪器中不同类型分析会话的按钮。
- 5)当出现提示时,选择是否将当前正在运行的应用程序实例转移到Instruments或停止应用程序并使用Instruments启动它的新实例。
在这两种情况下,请注意Xcode停止分析您的应用程序,启动工具并启动分析。 如果您选择传输会话,Instruments将开始分析当前状态下的应用程序。
Profile from the Command Line - 从命令行进行分析
1. Profile with instruments - 使用instruments分析
使用instruments
命令行工具(参见instruments(1) Mac OS X Developer Tools Manual Page
),使用指定模板对应用程序进行分析,而无需启动仪器。 在分析过程中收集的数据将保存在.trace
文件中的指定目录中。 分析完成后,您可以使用instruments
打开记录的数据文件以查看数据的可视表示。
To profile with instruments - 用仪器分析
- 1)打开终端,在
/ Applications / Utilities
中。 - 2)输入
instruments
命令收集数据。
例如,以下命令使用Allocations
模板对应用程序进行分析并将结果保存到.trace
文件中的桌面。
instruments -t "Allocations" -D ~/Desktop/
.trace
- 3)打开
Instruments
,然后选择File > Open
。
- 4)找到您保存的
.trace
文件,然后单击打开。
打开保存的文件后,Instruments
会自动将相关仪器添加到跟踪文档中,并使用收集的数据填充它们。 您可以查看和分析数据,以查找与您的应用程序有关的任何问题。
2. instruments Options - instruments选项
instruments
提供以下一组配置选项来定义要收集的数据。
配置选项 | 描述 |
---|---|
-t template | 当分析你的app时,要使用的分析模板的名字或者路径 |
-s | 返回所有安装的分析模板的列表 |
-D document | .trace文档要保存的路径,如果文件已经存在,当再次运行时,会将新记录的数据拼接到原有数据之后 |
-l # | 在结束之前,记录总的时间,以毫秒计算,如果不提供,记录会无限期发生,直到该应用程序被手动终止。 |
-i # | 要使用记录的instrument的索引 |
-p pid | 要记录的app的进程ID |
application | 要记录的app的路径 |
-w hardware device | 要target的设备的ID |
-e variable value | 分析时要应用的环境变量 |
argument | 要传递给正在分析的app的命令行参数,如果需要,可以指定多个参数 |
-v | 在分析时启用详细日志记录 |
3. Collect and view data with iprofiler - 使用iprofiler收集和查看数据
使用iprofiler
命令行工具(请参阅iprofiler(1) Mac OS X Developer Tools Manual Page
)来测量应用程序的性能,而无需启动仪器。收集性能数据后,将其导入仪器以查看数据的直观表示。由iprofiler
收集的数据保存在一个可由Instrument
打开的.dtps
包中。 iprofiler
支持以下类型的分析工具:
-
Activity Monitor
- 活动监视器。监视整个系统活动和统计信息,包括CPU,内存,磁盘和网络。活动监视器还监视所有现有进程和父/子流程层次结构。 -
Allocations
- 分配。通过跟踪allocations
来测量堆内存使用情况,包括按类分配的特定对象allocations
。分配也可以按区域记录虚拟内存统计数据。 -
Counters
- 计数器。使用基于时间或事件的采样方法收集性能监视器计数器事件。 -
Event Profiler
- 事件分析器。通过低开销,基于事件的采样来对系统CPU上运行的进程进行采样。 -
Leaks
- 泄漏。测量一般内存使用情况,检查泄漏的内存,并提供关于对象分配的统计信息以及所有活动分配和泄漏块的内存地址历史记录。 -
System Trace
- 系统跟踪。提供有关系统行为的全面信息。系统跟踪显示线程调度的时间,并通过系统调用或内存操作显示从用户代码到系统代码的所有转换。 -
Time Profiler
- 时间分析器。对系统CPU上运行的进程执行低开销,基于时间的采样。
To collect and view data from iprofiler - 从iprofiler中收集和查看数据
- 1)打开终端,在
/ Applications / Utilities
中。 - 2)输入一个
iprofiler
命令来收集数据。
例如,以下命令在您的应用上执行Activity Monitor
跟踪5秒钟,并将结果保存到桌面上的.dtps
文件。
iprofiler -activitymonitor -T 5s -d〜/ Desktop /
- 3)打开Instruments,然后选择
File > Open
。
- 4)找到你保存的
.dtps
文件,点击打开
打开保存的文件后,仪器会自动将相关仪器添加到跟踪文档中,并使用收集的数据填充它们。 您可以查看和分析数据,以查找与您的应用程序有关的任何问题。
4. iprofiler Options - iprofiler选项
iprofiler
提供下面的配置选项以定义要收集的数据。
配置选项 | 描述 |
---|---|
-l | 提供所有支持的instruments 列表 |
-L | 提供所有支持的instruments 列表,以及每种模板可以做什么的描述 |
-legacy | 执行/ usr / bin / instruments 中的Instruments命令行接口。 |
-T duration | 设置数据记录的时间长度,设置持续时间以秒(ns或者n),毫秒(nm或nms),微秒(nu或nus)计算,默认是10s |
-I interval | 设置采样时间内进行测量的频率。 将间隔设置为秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 默认值是Instruments应用程序的默认采样间隔。 |
-window period | 将性能测量限制在iprofiler运行的最后阶段。 将周期设置为秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 如果未指定此选项,则会在整个运行过程中测量性能。注意:此选项只能与-timeprofiler 和-systemtrace 模板选项一起使用。 |
-d path -o basename | 指定保存收集数据时使用的目标路径和名称。 默认路径是当前工作目录。 默认的基本名称是进程名称或进程ID |
-instrument name | 指定要运行的仪器。 有效的名称选项包括-activitymonitor,-allocations,-counters,-eventprofiler,-leaks,-systemtrace 和-timeprofiler 。至少必须列出一个模板。 您可以一次运行所有七个模板。 |
-kernelstacks | 指定内核堆栈仅用于回溯。如果既没有指定-kernelstack 也没有指定-userandkernelstacks 选项,则回溯仅包含用户堆栈。 |
-userandkernelstacks | 为backtraces 指定内核和用户堆栈。如果既没有指定-kernelstack 也没有指定-userandkernelstacks 选项,则backtraces 仅包含用户堆栈。 |
-pmc PMC_MNEMONIC | 与-counters 一起使用时,指定要计数的事件的助记符。 多个助记符应该用逗号分隔。 |
-allthreadstates | 使Time Profiler 模板能够分析所有线程。 如果未指定此值,则Time Profiler 只分析正在运行线程。 |
-a process/pid | 附加到已经运行的进程。 指定一个字符串将附加名称以该字符串开头的进程。 指定进程ID会将其附加到与该进程ID关联的进程。-leaks 选项要求您指定特定的单个进程或进程ID |
executable [args..] | 导致目标进程在测量期间启动。 列出可执行文件和参数,就好像它们是从命令行调用的一样。 |
5. iprofiler Examples - iprofiler示例
以下是常见的iprofiler
命令行示例列表。
本示例使用Time Profiler
和Activity Monitor
工具收集来自仪器中设置的当前采样持续时间的所有正在运行的进程的数据。 收集的数据以allprocs.dtps
格式保存到工作目录。
iprofiler -timeprofiler -activitymonitor
以下示例使用Time Profiler
工具打开并收集YourApp中的数据。 数据收集8秒钟,数据保存在/temp/YourApp_perf.dtps
。
iprofiler -T 8s -d /temp -o YourApp_perf -timeprofiler -a YourApp
以下示例使用Leaks
和 Activity Monitor
工具从具有823进程ID的进程收集数据。 数据收集2500
毫秒(2.5秒)并以YourApp_perf.dtps
保存到工作目录。
iprofiler -T 2500ms -o YourApp_perf -leaks -activitymonitor -a 823
以下示例使用Time Profiler
和Allocations
工具打开并收集YourApp
中的数据。 数据按照在Instruments
中设置的默认时间收集并保存在/tmp/allprocs.dtps
中。
iprofiler -d / tmp -timeprofiler -allocations -a YourApp.app
以下示例使用Time Profiler
和System Trace
工具打开和收集/path/to
中带有参数arg1
的YourApp
中的数据。 数据收集15秒,但只保存最近2秒内收集的数据。 数据以YourApp_perf.dtps
的形式保存到工作目录。
iprofiler -T 15 -I 1000ms -window 2s -o YourApp_perf -timeprofiler -systemtrace /path/to/Your.app arg1
Minimize Instruments Impact on Data Collection - 最小化仪器对数据采集的影响
Instruments旨在最大限度地减少其对数据收集的影响。 但是,通过改变一些基本设置,您可以进一步降低仪器对数据收集的影响。
您可以减小i许多仪器的采样间隔,以便收集更多数据。 但是,由于采样间隔较短而导致的高采样率可能会导致几个问题:
-
Processor time is required for every sample
- 每个样品需要处理器时间。 高采样率使用更多的处理器时间。 -
Sample interval timing may not be consistent
- 采样间隔时间可能不一致。 中断用于启动每个采样。 使用非常小的采样间隔时,发生这些中断时的变化可能会导致采样率的显着变化。 -
Small sample intervals cause more samples to be taken
- 小的采样间隔会导致采集更多的采样。 每个样本使用系统内存,并且大量样本快速占用内存较少的机器上的可用内存。
1. Run Instruments in Deferred Mode - 以延迟模式运行仪器
通过延迟数据分析来提高性能相关数据的准确性,直到您退出正在测试的应用程序。通常,仪器会在您的应用运行时分析和显示数据,以便您在收集数据时查看数据。执行分析时,会通过占用CPU时间和内存来降低目标进程速度,这会给您留下可能无法反映进程通常情况下的行为的测量结果。在延迟模式下运行仪器会延迟数据分析,直到数据收集完成,无论是在您的应用程序运行完毕后还是在您单击停止后。在延迟模式下,您被阻止与正在收集数据的仪器进行交互。
在延期模式下,仪器完成数据收集后,仪器会处理数据并将其显示在屏幕上。推迟数据分析为数据收集过程的后期阶段增加了时间,但它有助于确保与性能相关的数据的准确性。
To set deferred mode for Instruments - 为仪器设置延迟模式
- 1)选择
Instruments > Preferences
。
- 2)在
Recording
窗格中,选中Always use deferred mode
复选框
对于特别长的跟踪,由延迟模式引起的延迟可能很大。 通过为仅需要非常精确的数据收集的跟踪设置延迟模式来避免这种延迟。
To set deferred mode for a trace - 为跟踪设置延迟模式
- 1)选择
File > Record Options
。
- 2)在出现的对话框中,选择延迟模式复选框,然后单击确定。
如果在Instruments
偏好设置中启用了Always use deferred mode
,则此选项将被禁用。
后记
本篇主要介绍了记录、暂停和停止跟踪感兴趣的给个赞或者关注~~~