INSTRUMENTS调试工具的使用(一)

版本记录

版本号 时间
V1.0 2017.06.19

前言

我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个很好的检查工具,可以检测内存泄漏。还可以查看哪一个方法比较耗时。还可以检测离屏渲染等等,随后的几篇我们就说一下这个工具的使用。先给出官方指导文档
这一篇就先说一下instruments的简单实用

一、 认识instruments

Instruments 是应用程序用来动态跟踪和分析 Mac OS X 和 iOS 代码的实用工具,可以帮你更好的理解应用程序和操作系统的行为。你可以使用它来跟踪同 一进程不同方面的行为。你也可以记录一系列用户界面的动作并响应它们,同时也可以使用一个或多个 instruments 工具来收集数据。instruments 工具适用于xcode3.0和Mac OSX10.5。

Instruments 可以实现下面功能:

  • 分析一个或多个进程的行为。
  • 记录一系列用户的动作并响应它们,可靠的再现这些事件并收集多次运行的数据。
  • 创建你自己自定义的 DTrace instruments 来分析系统和应用程序的行为。
  • 保存用户界面记录和instruments的配置为模板,并从Xcode里面访问。
  • 追查代码中难以重现的问题。
  • 对你的程序进行性能分析。
  • 自动化测试你的代码。
  • 对你程序进行压力测试。
  • 进行一般的系统级故障诊断。
  • 对你的代码如何工作有更深入的了解。

每个 instruments 收集和显示不同类型的数据,比如文件访问、内存使用等等。 Instruments 包括一个标准 instruments 工具库,你可以使用它分析你代码的很多方 面。你可以配置 instruments 来收集关于同一个或者不同系统进程的数据。你可以使 用自定义的 instruments 工具新建接口来创建新的自定义 instruments 工具,它使用 DTrace 程序来收集你想要的数据。

所有 Instruments 的工作都在一个跟踪文档(trace documents)里面完成。一 个跟踪文档收集那些被 instruments 聚集的与该文档有关的数据。每个跟踪文档通常 包含一个会话的价值数据,这也是作为一个单一的跟踪。你可以保存跟踪文档到你已 经收集的跟踪数据备份里面,然后可以在以后再次打开并查看它们。

尽管大部分的 instruments 工具旨在收集数据,但是其中最精密的 instruments 工具可以帮助自动化收集数据。


二、启动instruments

1.从Finder启动

可以在Finder里面双击Instruments应用的图标来启动,如下图所示。

显示包内容

选择相应的app,双击打开即可。

打开Instruments.app

2.从xcode启动

它也可以从xcode启动,如下图所示。

xcode-profile启动

不管是哪种启动,最后启动后都是如下的画面。

启动成功

三、创建跟踪文档

  当你启动 Instruments 后,应用会自动为你创建一个文档。你同样可以通过选择 File > New 来创建一个新的文档。你每创建一个新的文档,Instruments 都会 示你选择一个开始模板。这些模板 定义了一些你将要在你的跟踪文档里面使用的 instruments 工具集。Instruments 供了几种不同的模板。

下面我们就看一下开始模板。

项目 详情
1.Blank 创建一个空的模板,你可以自定义的添加各种工具。
2.Activity Monitor 可以只用这个模板,研究系统工作负载和虚拟内存大小的关系
3.Allocations 将Allocations和VM跟踪器加到跟踪文档中,使用该工具可以监视内存和对象的内存分配方式和情况。
4.CocoaLayout 是一种Cocoa布局工具 ,可以应用于iOS模拟器和Cocoa桌面应用,但是不能和连接的iOS设备一起使用。观察NSLayoutConstraint对象的改变,帮助我们判断什么时间什么地点的constraint是否合理
5.Core Animation 将CoreAnimation加入到跟踪文档中,可以测量ios设备上每秒的CoreAnimation帧数,这可以帮助你理解内容是如何渲染到屏幕上的,(图形性能)这个模块显示程序显卡性能以及CPU使用情况。
6.CoreData 将CoreData数据提取、缓存缺失和存储加入到跟踪文档中,使用这个工具可以检测应用程序中数据的存储交互。
7.Counters 收集使用时间或基于事件的抽样方法的性能监控计数器(PMC)事件。
8.Energy Log 耗电量监控,将Energy Diagnostics, CPU Activity, Display Brightness, Sleep/Wake, Bluetooth, WiFi, and GPS instruments加入到跟踪文档中进行检测。
9.File Activity 将File Activity, Reads/Writes, File Attributes, and Directory I/O instruments 加入到跟踪文档中,只用这个模板可以让你检查系统文件的使用情况,可以检查文件的打开、关闭、读和写操作,同时也可以检测文件系统本身的改变,包括权限和所有权发生的改变。
10.Leaks 将the Allocations and Leaks instruments加入到模板中,使用这个模板可以帮助你检测内存的泄漏。
11.Metal System Trace 它是是apple 2014年在ios平台上推出的高效底层的3D图形API,它通过减少驱动层的API调用CPU的消耗提高渲染效率。
12.Network 用链接工具分析你的程序如何使用TCP/IP和UDP/IP链接。
13.OpenGL ES Analysis 将OpenGL ES Analyzer and OpenGL ES Driver加入到模板中,这个模块测量分析OpenGL ES活动正确性检测以及表现问题,提供解决建议。
14.System Trace 系统跟踪,通过显示当前被调度线程提供综合的系统表现,显示从用户到系统的转换代码通过两个系统调用或内存操作。
15.System Usage 这个模板记录关于文件读写,sockets,I/O系统活动, 输入输出。
16.Time Profile 执行对系统的CPU上运行的进程低负载时间为基础采样。
17. Zombies 测量一般的内存使用,专注于检测过度释放的野指针对象,也提供对象分配统计,以及主动分配的内存地址历史。

其中常用的有以下几种工具:

Allocations,Leaks,Zombies,Core Animation,Automation,Time Profiler,Cocoa Layout,Energy Diagnostics,Network

我上面的数据都是xcode8带的,有细心的读者会发现,以前的模板貌似功能更多些,其实都差不多只是合并了而已。

下面按照功能划分,看一下这些工具是怎么使用的。

定位内存问题

  • 内存不合理引用,检测重复操作内存是否持续增长 Allocations
    每次操作后,点击mark generations button,会设置一个flag,然后查看每个迭代的详细数据。
  • 内存泄漏Leaks,内存泄漏使用Leaks检测,如果对象发生内存泄漏,detail panel 中会看到对象的retain release历史记录,如果非对象发生内存泄漏,就会看到malloc和free的调用历史。
  • 野指针Zombies,Zombie问题,引用retaincount为0的对象,使用Debug模式,将环境变量NSZombieEnabled设为true。

检测I/O活动

检测iOS app如何使用TCP/IP和UDP/IP,与connections Instruments一起使用,检测app发送和接收的包数目。

图像性能检测

  • core animation graphics 用来检测帧频率
  • OpenGL activity
  • GPU Driver

** CPU使用**

  • Performance Monitor Counters。
  • 电量:Energry 跟踪电量、CPU、网络、显示亮度、睡眠/唤醒、蓝牙、wifi、GPS。可以全天开启Energry Diagnostics Log模式,在开发手机设备中,(重启或关机会丢失该数据),数据收集结束后,将log数据传到PC上。
  • 线程使用Multicore Trace Template,分析多核性能,线程状态、调度队列、块使用情况。Multicore Trace Template包含Thread states和dispatch Instruments。
  • Timer Profiler Trace Template检测内核使用情况。

自动化测试

UI automation Automation instrument 工具允许你让 iOS 应用的用户界面测试自动化。自动化界面测试可以让你:

  • 省去关键人员和释放其他工作资源
  • 执行更多综合测试
  • 开发可重复的回归测试
  • 减少程序错误
  • 提高开发周期,产品更新

  如果你不想让 Instruments 在你新建一个文档的时候询问你使用那个模板,你可 以在 Instruments 的偏好设置里面勾选 Suppress template chooser 选项来禁止模板选择。

后记

  这个工具用起来是真的爽,特别是在优化的时候,可以很好的解决你的疑问和困惑,今晚已经很晚了,未完,待续~~

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

推荐阅读更多精彩内容

  • 在较高版本的浏览器中,JS提供了sessionStorage、和globalStorage。在html5中提供lo...
    十年一品温如言1008阅读 193评论 0 0
  • 数组 最好先用define定义一个宏常量作为数组的个数注意越界问题,不要超出分配的个数和空间 C语言中没有字符串这...
    zzy1998阅读 153评论 0 0
  • 许许多多的周末,都没有周末应有的那种轻松闲适感。总觉得自己还在某条未完成的路上,总有一种被追逐的感觉,想真正地有一...
    漫天星树阅读 307评论 0 1
  • CDN工作原理 人们开始希望网络更加的快速,而不是在无休止的等待中上网。这样CDN就得到了飞速的发展,那么问题就来...
    资历尚浅的闫先生阅读 1,265评论 0 2
  • 冷漠的背后 郑建文 课堂上同学们在紧张地复习,做着试卷,课上了多半节,我开始在教室巡视。以便检查一下学生们...
    郑建文z阅读 362评论 0 0