最近一直在解决内存泄漏的问题,天天和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.1    CORE DATA INSTRUMENTS[CORE DATA相关]    
        8.1.1    Core Data Saves    
        8.1.2    Core Data Fetches    
        8.1.3    Core Data Faults    
        8.1.4    Core Data Cache Misses    
    8.2    DISPATCH INSTRUMENTS[并发相关]    
        8.2.1    Dispatch    
    8.3    ENERGY DIAGNOSITICS INSTRUMENTS[电池诊断相关]    
        8.3.1    电量使用(Energy Usage)    
        8.3.2    CPU 活动(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.4    FILE SYSTEM INSTRUMENTS[文件系统相关]    
        8.4.1    I/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.5    GARBAGE COLLECTION INSTRUMENTS[垃圾回收相关]    
        8.5.1    GC Total
        8.5.2    垃圾回收(Garbage Collection)
    8.6    GRAPHICS INSTRUMENTS[绘图相关]
        8.6.1    核心动画(Core Animation)
        8.6.2    OpenGL驱动器(OpenGL Driver)
        8.6.3    OpenGL ES驱动器(OpenGL ES Driver)
       8.6.4    OpenGL ES分析器(OpenGL ES Analyzer)
    8.7    INPUT/OUTPUT INSTRUMENTS[输入输出相关]
        8.7.1    读/写(Reads/Wirtes)
    8.8    MASTER TRACKS INSTRUMENTS[界面操作跟踪相关]
        8.8.1    用户界面(User Interface)
    8.9    MEMORY INSTRUMENTS[内存相关]
        8.9.1    共享内存(Shared Memory)
        8.9.2    分配内存(Allocati*****)
        8.9.3    内存泄露(Leaks)
    8.10    SYSTEM 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.8    CPU监控器(CPU Monitor)
        8.10.9    活动监控器(Activity Monitor)
    8.11    THREADS/LOCKS INSTRUMENTS[线程相关]
        8.11.1    Java线程(Java Thread)
    8.12    UI 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.13    USER INTERFACE INSTRUMENTS[用户界面相关]
        8.13.1    Cocoa事件(Cocoa Events)
        8.13.2    Carbon事件(Carbon Events)