当前位置: 首页 > news >正文

【IOS】Instruments 使用教程

最近一直在解决内存泄漏的问题,天天和Instruments这个工具打交道,本来想给大家写一片相关的教程的。但是今天逛论坛的时候发现了别人翻译的文档,写的好,自认为没有办法写出。所以就不写了,在这里把那篇文章给大家转载过来。

原文:Instruments User Guide
链接:
https://developer.apple.com/library/ios/#DOCUMENTATION/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html


PDF文档下载: Instruments 用户指南.pdf (3748 K) 下载次数:5111


PS:
【翻译缘由---翻译本身也是强化学习的过程】
之前一直在CocoaChina上面潜水,虽然做iOS开发也快2年了,但是总觉得缺少了点什么。以前查看英文API文档,有些细节总是记不住,每次看完之后也没什么印象。忽然有一天有人向我抱怨说查看官方英文API文档太痛苦了,然后我就想如果我把一些常用的官方文档翻译为中文的话,或许可以帮助这批需要帮助的人,然后偶就心血来潮,开始了自娱自乐的翻译之旅。帮助别人的同时,自己也获得快乐。


或许很多人对Instruments应用不太了解,但可能很多老的iOS开发者都应该用过Instruments工具来检测iOS应用内存泄漏情况。特别是在iOS 5.0之前,即苹果在iOS平台上面还没支持ARC的时候,写iOS应用就类似C语言那样,容易忘记释放内存,而内存对移动设备而言是非常可贵的。即使目前iPhone设备内存已经基本都满足512MB了,但是因为苹果的后台模式是把整个应用封装起来等待下次启用,所以该应用所占用的内存同样被占据了。也就是即使应用进入后台模式,它还是仍然占用原先的内存的,所以你打开的应用越多,内存耗用自然也很多。对很多普通用户而言,往往他们打开的应用都是进入后台模式的,很少有用户清理后台的应用,所以也就造成很多应用其实可用内存还是非常有限地 (题外话:如果苹果原生支持一键清理后台程序就好了,貌似越狱的工具里面有这样的支持的)。

还有做过iOS应用自动化测试的开发者,应该对UIAutomation很熟悉吧。对,它就是通过JS脚本来写界面自动化测试用例。而Instruments应用对UIAutomation支持很完善,你可以通过它查看很多代码潜在的问题,并测试性能。

其实Instruments应用还有很多强大的功能,它原生支持很多instrument工具,帮助你分析你的代码,不仅包括内存检测和自动化测试,它还可以监测文件读写操作等等待。所以一个好的iOS开发者是应该掌握Instrument应用的使用。因为Instruments应用本身功能太强大的,所以完全掌握机会不可能,但是因为它们内置的很多工具具有相似性,所以你基本掌握自己常用的即可。同时了解一下内部有哪些功能,这样在你需要用到的时候再查查文档,就可以很快上手了。

最后,本文在翻译过程中发现很多地方直译成中文比较晦涩,所以采用了意译的方式,这不可避免的造成有一些地方可能和原文有一定的出入,所以如果你阅读的时候发现有任何的错误都可以给我发邮件:xyl.layne@gmail.com
最后可以关注我微博大家一起沟通交流学习。
微博地址: http://weibo.com/u/1826448972


最后希望这篇文档能帮上那些感觉看官方英文文档困难的人。如果可以我还是推荐尽量查看英文原文档,毕竟那是原汁原味,翻译总无法避免有一定的疏漏。

因为翻译的时候写在word里面,格式太多,图片上传麻烦,所以干脆直接转换为PDF提供给大家下载。

以下提供目录预览:



目录


INSTRUMENTS用户指南介绍
本文档组织结构
第一章INSTRUMENTS快速入门
1.1启动INSTRUMENTS
1.2创建一个跟踪文档
1.3浏览跟踪文档窗口
1.4示例:快速使用一个跟踪
1.5下一步是什么?
第二章添加和配置INSTRUMENTS工具
2.1使用INSTRUMENT库
2.1.1修改库试图模式
2.1.2查找库里面的某个instrument工具
2.1.3新建一个自定义的instrument分组
2.2添加和删除INSTRUMENTS工具
2.3配置一个INSTRUMENT工具
第三章记录跟踪数据
3.1选择需要跟踪的进程
3.1.1跟踪所有进程
3.1.2跟踪一个已有的进程
3.1.3跟踪一个新的进程
3.1.4给每个Instrument工具指定不同的目标
3.2收集数据
3.3使用快速启动键启动INSTRUMENTS
3.4以最小模式运行
3.5从XCODE运行INSTRUMENTS应用
3.6无线连接IOS设备
第四章记录用户界面轨迹
4.1记录用户界面轨迹
4.2重复记录用户界面轨迹
4.3回放用户界面轨迹
第五章查看和分析跟踪数据
5.1查看数据的工具
5.1.1跟踪面板
5.1.2详细面板
5.1.3扩展详细面板
5.1.4运行浏览器
5.2分析技术
5.2.1使用Sampler Instrument分析数据
5.2.2使用Allocati***** Instrument工具分析数据
5.2.3查找内存泄露
5.2.4分析Core Data应用程序
第六章保存和导入跟踪数据
6.1保存跟踪文档
6.2导出跟踪数据
6.3从SAMPLE工具中导入数据
6.4使用DTRACE数据
第七章使用DTRACE创建自定义INSTRUMENTS工具
7.1关于自定义INSTRUMENTS工具
7.2创建自定义的INSTRUMENT工具
7.2.1添加和删除探针
7.2.2指定探针的提供者
7.2.3给探针添加断言
7.2.4给探针添加动作
7.2.5编写自定义脚本的提示
7.2.6编写BEGIN和END脚本
7.2.7从自定义脚本里面访问内核数据
7.2.8变量作用域
7.2.9查找脚本错误
7.3导出DTRACE脚本
第八章内置INSTRUMENTS工具
8.1CORE DATA INSTRUMENTS[CORE DATA相关]
8.1.1Core Data Saves
8.1.2Core Data Fetches
8.1.3Core Data Faults
8.1.4Core Data Cache Misses
8.2DISPATCH INSTRUMENTS[并发相关]
8.2.1Dispatch
8.3ENERGY DIAGNOSITICS INSTRUMENTS[电池诊断相关]
8.3.1电量使用(Energy Usage)
8.3.2CPU 活动(CPU Acitivity)
8.3.3显示亮度(Display Brightness)
8.3.4休眠/唤醒(Sleep/Wake)
8.3.5蓝牙(Bluetooth)
8.3.6无线(WiFi)
8.3.7定位(GPS)
8.4FILE SYSTEM INSTRUMENTS[文件系统相关]
8.4.1I/O 活动(I/O Activity)
8.4.2文件锁(File Locks)
8.4.3文件属性(File Attributes)
8.4.4文件活动(File Activity)
8.4.5目录I/O(Directory I/O)
8.5GARBAGE COLLECTION INSTRUMENTS[垃圾回收相关]
8.5.1GC Total
8.5.2垃圾回收(Garbage Collection)
8.6GRAPHICS INSTRUMENTS[绘图相关]
8.6.1核心动画(Core Animation)
8.6.2OpenGL驱动器(OpenGL Driver)
8.6.3OpenGL ES驱动器(OpenGL ES Driver)
8.6.4OpenGL ES分析器(OpenGL ES Analyzer)
8.7INPUT/OUTPUT INSTRUMENTS[输入输出相关]
8.7.1读/写(Reads/Wirtes)
8.8MASTER TRACKS INSTRUMENTS[界面操作跟踪相关]
8.8.1用户界面(User Interface)
8.9MEMORY INSTRUMENTS[内存相关]
8.9.1共享内存(Shared Memory)
8.9.2分配内存(Allocati*****)
8.9.3内存泄露(Leaks)
8.10SYSTEM INSTRUMENTS[系统相关]
8.10.1时间分析器(Time Profiler)
8.10.2旋转监控器(Spin Monitor)
8.10.3取样(Sampler)
8.10.4进程(Process)
8.10.5网络活动监控器(Network Activity Monitor)
8.10.6内存监控器(Memory Monitor)
8.10.7硬盘监控器(Disk Monitor)
8.10.8CPU监控器(CPU Monitor)
8.10.9活动监控器(Activity Monitor)
8.11THREADS/LOCKS INSTRUMENTS[线程相关]
8.11.1Java线程(Java Thread)
8.12UI AUTOMATION[界面自动化相关]
8.12.1使用Automation Instrument工具
8.12.2访问和操作用户界面元素
8.12.3添加灵活的超时间
8.12.4验证测试结果
8.12.5输出测试结果和数据的日子
8.12.6处理警告
8.12.7检测和指定设备的方向
8.12.8测试多任务
8.13USER INTERFACE INSTRUMENTS[用户界面相关]
8.13.1Cocoa事件(Cocoa Events)
8.13.2Carbon事件(Carbon Events)
结束语
推荐资源



相关文章:

  • PyCharm教程
  • 需要谈谈的游戏测试第二季(三)
  • 需要谈谈的游戏测试第二季(四)
  • linux系统中的进程状态分析
  • 在3D游戏中显示网页
  • react-native redux使用指南
  • [luogu2165 AHOI2009] 飞行棋 (枚举)
  • node全局对象 文件系统
  • linux下安装Bugzilla(一)
  • sqlServer之取文件后缀
  • 小评 月影技能的sp
  • HashMap 与HashTable的区别
  • 一份书写游戏的回忆录
  • js得到当前页面的url信息
  • debug容错 缺陷抓取
  • Facebook AccountKit 接入的坑点
  • Intervention/image 图片处理扩展包的安装和使用
  • java小心机(3)| 浅析finalize()
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • React组件设计模式(一)
  • SAP云平台里Global Account和Sub Account的关系
  • 初识 beanstalkd
  • 飞驰在Mesos的涡轮引擎上
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端自动化解决方案
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 手写一个CommonJS打包工具(一)
  • 问题之ssh中Host key verification failed的解决
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # Java NIO(一)FileChannel
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2.2w字)前端单元测试之Jest详解篇
  • (6)添加vue-cookie
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十) 初识 Docker file
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转载)虚函数剖析
  • ***通过什么方式***网吧
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 验证控件和javaScript的冲突问题
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET性能优化(文摘)
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [100天算法】-二叉树剪枝(day 48)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2018-01-08] Python强化周的第一天