INSTRUMENTS调试工具的使用(十七) —— 通常任务之记录、暂停和停止跟踪(六)

版本记录

版本号 时间
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 (or press Command-I)

仪器启动,并出现分析模板选择对话框。 请注意,您的应用程序是在目标设备和进程列表中自动选择的。

To use a default template when profiling from the Xcode build and product menus - 从Xcode构建和产品菜单进行分析时使用默认模板

  • 1)在Xcode中打开一个应用程序项目。
  • 2)执行以下操作之一打开方案编辑器对话框:
    • 从Xcode主窗口工具栏中的目标设备列表中选择Edit Scheme
  • 选择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 ProfilerActivity 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

以下示例使用LeaksActivity Monitor工具从具有823进程ID的进程收集数据。 数据收集2500毫秒(2.5秒)并以YourApp_perf.dtps保存到工作目录。

iprofiler -T 2500ms -o YourApp_perf -leaks -activitymonitor -a 823

以下示例使用Time ProfilerAllocations工具打开并收集YourApp中的数据。 数据按照在Instruments中设置的默认时间收集并保存在/tmp/allprocs.dtps中。

iprofiler -d / tmp -timeprofiler -allocations -a YourApp.app

以下示例使用Time ProfilerSystem Trace工具打开和收集/path/to中带有参数arg1YourApp中的数据。 数据收集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,则此选项将被禁用。

后记

本篇主要介绍了记录、暂停和停止跟踪感兴趣的给个赞或者关注~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容