最近一直在解決內存泄漏的問題,天天和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)