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閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容

  • 在較高版本的瀏覽器中,JS提供了sessionStorage、和globalStorage。在html5中提供lo...
    十年一品溫如言1008閱讀 204評論 0 0
  • 數組 最好先用define定義一個宏常量作為數組的個數注意越界問題,不要超出分配的個數和空間 C語言中沒有字符串這...
    zzy1998閱讀 155評論 0 0
  • 許許多多的周末,都沒有周末應有的那種輕松閑適感。總覺得自己還在某條未完成的路上,總有一種被追逐的感覺,想真正地有一...
    漫天星樹閱讀 318評論 0 1
  • CDN工作原理 人們開始希望網絡更加的快速,而不是在無休止的等待中上網。這樣CDN就得到了飛速的發展,那么問題就來...
    資歷尚淺的閆先生閱讀 1,276評論 0 2
  • 冷漠的背后 鄭建文 課堂上同學們在緊張地復習,做著試卷,課上了多半節,我開始在教室巡視。以便檢查一下學生們...
    鄭建文z閱讀 367評論 0 0