版本記錄
| 版本號 | 時間 |
|---|---|
| V1.0 | 2018.06.13 |
前言
我們在做app的時候,不是做完功能就結(jié)束了,很多時候是需要進行檢查和優(yōu)化的,而xcode自帶了一個很好的檢查工具,可以檢測內(nèi)存泄漏。還可以查看哪一個方法比較耗時。還可以檢測離屏渲染等等,隨后的幾篇我們就說一下這個工具的使用。感興趣的可以看這幾篇。
1.INSTRUMENTS調(diào)試工具的使用(一)
2.INSTRUMENTS調(diào)試工具的使用(二)
3.INSTRUMENTS調(diào)試工具的使用(三)
4.INSTRUMENTS調(diào)試工具的使用(四)
5.INSTRUMENTS調(diào)試工具的使用(五)
6.INSTRUMENTS調(diào)試工具的使用(六)
7.INSTRUMENTS調(diào)試工具的使用(七)
8.INSTRUMENTS調(diào)試工具的使用(八)
9.INSTRUMENTS調(diào)試工具的使用(九)
10. INSTRUMENTS調(diào)試工具的使用(十)
11. INSTRUMENTS調(diào)試工具的使用(十一) —— 簡介(一)
12. INSTRUMENTS調(diào)試工具的使用(十二) —— 通常任務(wù)之啟動Instruments(一)
13. INSTRUMENTS調(diào)試工具的使用(十三) —— 通常任務(wù)之簡單了解Instruments(二)
14. INSTRUMENTS調(diào)試工具的使用(十四) —— 通常任務(wù)之創(chuàng)建、保存和打開跟蹤文檔(三)
15. INSTRUMENTS調(diào)試工具的使用(十五) —— 通常任務(wù)之指定目標應(yīng)用和設(shè)備(四)
16. INSTRUMENTS調(diào)試工具的使用(十六) —— 通常任務(wù)之訪問和使用個別儀器(五)
Record, Pause, and Stop Traces - 記錄、暫停和停止跟蹤
儀器在運行時收集有關(guān)您的應(yīng)用的信息。 本章介紹如何指導(dǎo)儀器收集信息。
Record a Trace - 記錄跟蹤
當你準備好分析你的應(yīng)用時,你開始記錄。 在記錄時,跟蹤文檔中的instruments將根據(jù)其配置監(jiān)控您的應(yīng)用。 發(fā)生記錄時,時間軸窗格和詳細信息窗格將更新以提供捕獲內(nèi)容的實時視圖。
To begin recording - 開始錄制
執(zhí)行以下操作之一:
- 單擊跟蹤文檔工具欄中的記錄按鈕。
- 選擇
File> Record Trace(或按Command-R)。

再次點擊Command-R停止記錄。
1. Set Recording Options - 設(shè)置錄制選項
設(shè)置記錄選項以改善跟蹤文檔中的數(shù)據(jù)收集。 記錄前選擇延遲時間,要記錄的時間長度,要保存的數(shù)據(jù)量或是否以延遲模式記錄數(shù)據(jù)。
To set the recording options for a trace - 設(shè)置跟蹤的錄制選項
- 1)選擇
File> Record Options打開Record Options對話框

- 2)根據(jù)需要自定義設(shè)置

選項包括:
-
Time limit- 時間限制:儀器將記錄數(shù)據(jù)的最長時間(以秒為單位)。 -
Window limit- 窗口限制:將被保存的數(shù)據(jù)的最大持續(xù)時間(以秒為單位)。 如果記錄的持續(xù)時間超過指定窗口限制的時間(例如,超過4秒),則僅保存最近4秒內(nèi)收集的數(shù)據(jù)。 -
Deferred mode- 延遲模式:選擇推遲數(shù)據(jù)分析,直到數(shù)據(jù)收集完成。 這可以導(dǎo)致更快和更準確的數(shù)據(jù)收集,因為更多的系統(tǒng)資源針對正在記錄的過程。
注意:如果不適用于跟蹤文檔中的工具或儀器中的首選項配置,則可能禁用此對話框中的某些選項。 要確定選項被禁用的原因,請將鼠標懸停在該選項上幾秒鐘以查看其工具提示。
OS X 10.7或更高版本以及iOS 5或更高版本支持Window Limit。
- 3)點擊OK關(guān)閉
Record Options對話框。
Pause a Trace - 暫停跟蹤
如有必要,您可以暫停錄制并在稍后再次恢復(fù)。
To pause an active recording - 暫停活動錄制
執(zhí)行以下操作之一:
- 單擊跟蹤文檔工具欄中的暫停按鈕。
- 選擇
File> Pause Trace(或按Shift-Command-R)。

Stop a Trace - 停止跟蹤
一旦記錄了所需的數(shù)據(jù),請停止記錄,以便開始分析收集的數(shù)據(jù)。
To stop an active recording - 停止活動錄制
執(zhí)行以下操作之一:
- 單擊跟蹤文檔工具欄中的停止按鈕。
- 選擇
File > Stop Trace(或按Command-R)。

Profile from the Dock - Dock中Profile
您可以通過從Dock中的Instruments應(yīng)用程序圖標觸發(fā)Time Profiler來自動記錄后臺中的某些事件。
To collect Time Profiler information from the Dock - 從Dock中收集Time Profiler信息
- 1)打開Instruments,按住Control鍵并點按Dock中的Instruments圖標。

- 2)在出現(xiàn)的快捷菜單中,選擇進程配置文件開始錄制。

選項包括:
-
System Time Profile- 系統(tǒng)時間分析。 開始分析所有系統(tǒng)進程。 -
Time Profile Specific Process- 時間分析特定過程。 使用子菜單中的特定應(yīng)用程序啟動Time Profiler儀器。 -
Automatically Time Profile Spinning Applications- 自動時間輪廓旋轉(zhuǎn)應(yīng)用程序。 自動配置文件阻止(旋轉(zhuǎn))的應(yīng)用程序在未來。 -
Allow Tracing of Any Process (10 hours)- 允許追蹤任何進程(10小時)。 跟蹤在接下來的10個小時內(nèi)發(fā)生的任何過程。 在10個小時內(nèi)必須輸入密碼。
注意:以這種方式記錄的數(shù)據(jù)以
.dtps格式保存到?/ Library / Application Support / Instruments / Unimported /。
Profile from Xcode - 從Xcode中Profile
儀器是Xcode開發(fā)工作流程的關(guān)鍵組件,您可以在構(gòu)建和測試您的應(yīng)用程序時直接從Xcode啟動它。
1. Profile from the build and product menus - 構(gòu)建和產(chǎn)品菜單中的配置文件
Xcode構(gòu)建菜單允許您運行,測試和分析您的應(yīng)用程序。 它還可以讓你用儀器來分析你的應(yīng)用程序。
To profile your app from the Xcode build and product menus - 從Xcode構(gòu)建和產(chǎn)品菜單中分析您的應(yīng)用程序
1)在Xcode中打開一個應(yīng)用程序項目。
2)執(zhí)行以下操作之一:
點擊并按住Xcode主窗口中的構(gòu)建菜單,然后從出現(xiàn)的菜單中選擇配置文件。

- 選擇
Product > Profile(orpress Command-I)

儀器啟動,并出現(xiàn)分析模板選擇對話框。 請注意,您的應(yīng)用程序是在目標設(shè)備和進程列表中自動選擇的。

To use a default template when profiling from the Xcode build and product menus - 從Xcode構(gòu)建和產(chǎn)品菜單進行分析時使用默認模板
- 1)在Xcode中打開一個應(yīng)用程序項目。
- 2)執(zhí)行以下操作之一打開方案編輯器對話框:
- 從Xcode主窗口工具欄中的目標設(shè)備列表中選擇
Edit Scheme。
- 從Xcode主窗口工具欄中的目標設(shè)備列表中選擇

選擇
Product > Scheme > Edit Scheme,或按命令Command–Less Than (<)。3)在方案編輯器對話框的邊欄中單擊配置文件。

- 4)從Instrument彈出式菜單中選擇所需的分析模板

- 5)點擊關(guān)閉。
現(xiàn)在,無論何時profile應(yīng)用程序,Instruments都會自動在您在方案編輯器對話框中選擇的模板中打開它,并開始分析。

2. Profile from Xcode gauges while debugging - 在調(diào)試過程中從Xcode gauges配置文件
Xcode調(diào)試導(dǎo)航器包含幾個測量儀,用于在測試和調(diào)試時監(jiān)視應(yīng)用程序。 這些儀表跟蹤各種因素,包括CPU使用率,內(nèi)存和能量影響,并可以提醒您潛在的問題,這些問題可能會影響性能,功耗等等。 如果您在測試應(yīng)用程序時發(fā)現(xiàn)想要進一步調(diào)查的趨勢,則可以將監(jiān)視轉(zhuǎn)換到儀器以進行更詳細的分析。
To initiate profiling from an Xcode gauge - 從Xcode測量儀開始分析
1)在Xcode中打開一個應(yīng)用程序項目并運行它。
2)在您的應(yīng)用程序正在運行時,通過執(zhí)行以下操作之一來顯示調(diào)試導(dǎo)航器:
單擊導(dǎo)航器選擇欄中的
Debug Navigator按鈕。

- 選擇
View > Navigators > Show Debug Navigator (or press Command-6)。

- 3)在調(diào)試導(dǎo)航器中單擊所需的量表。

- 4)在主編輯器中單擊儀器的儀器配置文件按鈕。

請注意,并非每個Xcode儀表在Instruments按鈕中都有個Profile。 例如,Energy Impact測量儀包含幾個用于啟動儀器中不同類型分析會話的按鈕。

- 5)當出現(xiàn)提示時,選擇是否將當前正在運行的應(yīng)用程序?qū)嵗D(zhuǎn)移到Instruments或停止應(yīng)用程序并使用Instruments啟動它的新實例。

在這兩種情況下,請注意Xcode停止分析您的應(yīng)用程序,啟動工具并啟動分析。 如果您選擇傳輸會話,Instruments將開始分析當前狀態(tài)下的應(yīng)用程序。
Profile from the Command Line - 從命令行進行分析
1. Profile with instruments - 使用instruments分析
使用instruments命令行工具(參見instruments(1) Mac OS X Developer Tools Manual Page),使用指定模板對應(yīng)用程序進行分析,而無需啟動儀器。 在分析過程中收集的數(shù)據(jù)將保存在.trace文件中的指定目錄中。 分析完成后,您可以使用instruments打開記錄的數(shù)據(jù)文件以查看數(shù)據(jù)的可視表示。
To profile with instruments - 用儀器分析
- 1)打開終端,在
/ Applications / Utilities中。 - 2)輸入
instruments命令收集數(shù)據(jù)。
例如,以下命令使用Allocations模板對應(yīng)用程序進行分析并將結(jié)果保存到.trace文件中的桌面。
instruments -t "Allocations" -D ~/Desktop/
.trace
- 3)打開
Instruments,然后選擇File > Open。

- 4)找到您保存的
.trace文件,然后單擊打開。

打開保存的文件后,Instruments會自動將相關(guān)儀器添加到跟蹤文檔中,并使用收集的數(shù)據(jù)填充它們。 您可以查看和分析數(shù)據(jù),以查找與您的應(yīng)用程序有關(guān)的任何問題。

2. instruments Options - instruments選項
instruments提供以下一組配置選項來定義要收集的數(shù)據(jù)。
| 配置選項 | 描述 |
|---|---|
| -t template | 當分析你的app時,要使用的分析模板的名字或者路徑 |
| -s | 返回所有安裝的分析模板的列表 |
| -D document | .trace文檔要保存的路徑,如果文件已經(jīng)存在,當再次運行時,會將新記錄的數(shù)據(jù)拼接到原有數(shù)據(jù)之后 |
| -l # | 在結(jié)束之前,記錄總的時間,以毫秒計算,如果不提供,記錄會無限期發(fā)生,直到該應(yīng)用程序被手動終止。 |
| -i # | 要使用記錄的instrument的索引 |
| -p pid | 要記錄的app的進程ID |
| application | 要記錄的app的路徑 |
| -w hardware device | 要target的設(shè)備的ID |
| -e variable value | 分析時要應(yīng)用的環(huán)境變量 |
| argument | 要傳遞給正在分析的app的命令行參數(shù),如果需要,可以指定多個參數(shù) |
| -v | 在分析時啟用詳細日志記錄 |
3. Collect and view data with iprofiler - 使用iprofiler收集和查看數(shù)據(jù)
使用iprofiler命令行工具(請參閱iprofiler(1) Mac OS X Developer Tools Manual Page)來測量應(yīng)用程序的性能,而無需啟動儀器。收集性能數(shù)據(jù)后,將其導(dǎo)入儀器以查看數(shù)據(jù)的直觀表示。由iprofiler收集的數(shù)據(jù)保存在一個可由Instrument打開的.dtps包中。 iprofiler支持以下類型的分析工具:
-
Activity Monitor- 活動監(jiān)視器。監(jiān)視整個系統(tǒng)活動和統(tǒng)計信息,包括CPU,內(nèi)存,磁盤和網(wǎng)絡(luò)?;顒颖O(jiān)視器還監(jiān)視所有現(xiàn)有進程和父/子流程層次結(jié)構(gòu)。 -
Allocations- 分配。通過跟蹤allocations來測量堆內(nèi)存使用情況,包括按類分配的特定對象allocations。分配也可以按區(qū)域記錄虛擬內(nèi)存統(tǒng)計數(shù)據(jù)。 -
Counters- 計數(shù)器。使用基于時間或事件的采樣方法收集性能監(jiān)視器計數(shù)器事件。 -
Event Profiler- 事件分析器。通過低開銷,基于事件的采樣來對系統(tǒng)CPU上運行的進程進行采樣。 -
Leaks- 泄漏。測量一般內(nèi)存使用情況,檢查泄漏的內(nèi)存,并提供關(guān)于對象分配的統(tǒng)計信息以及所有活動分配和泄漏塊的內(nèi)存地址歷史記錄。 -
System Trace- 系統(tǒng)跟蹤。提供有關(guān)系統(tǒng)行為的全面信息。系統(tǒng)跟蹤顯示線程調(diào)度的時間,并通過系統(tǒng)調(diào)用或內(nèi)存操作顯示從用戶代碼到系統(tǒng)代碼的所有轉(zhuǎn)換。 -
Time Profiler- 時間分析器。對系統(tǒng)CPU上運行的進程執(zhí)行低開銷,基于時間的采樣。
To collect and view data from iprofiler - 從iprofiler中收集和查看數(shù)據(jù)
- 1)打開終端,在
/ Applications / Utilities中。 - 2)輸入一個
iprofiler命令來收集數(shù)據(jù)。
例如,以下命令在您的應(yīng)用上執(zhí)行Activity Monitor跟蹤5秒鐘,并將結(jié)果保存到桌面上的.dtps文件。
iprofiler -activitymonitor -T 5s -d?/ Desktop /
- 3)打開Instruments,然后選擇
File > Open。

- 4)找到你保存的
.dtps文件,點擊打開

打開保存的文件后,儀器會自動將相關(guān)儀器添加到跟蹤文檔中,并使用收集的數(shù)據(jù)填充它們。 您可以查看和分析數(shù)據(jù),以查找與您的應(yīng)用程序有關(guān)的任何問題。

4. iprofiler Options - iprofiler選項
iprofiler提供下面的配置選項以定義要收集的數(shù)據(jù)。
| 配置選項 | 描述 |
|---|---|
| -l | 提供所有支持的instruments 列表 |
| -L | 提供所有支持的instruments 列表,以及每種模板可以做什么的描述 |
| -legacy | 執(zhí)行/ usr / bin / instruments中的Instruments命令行接口。 |
| -T duration | 設(shè)置數(shù)據(jù)記錄的時間長度,設(shè)置持續(xù)時間以秒(ns或者n),毫秒(nm或nms),微秒(nu或nus)計算,默認是10s |
| -I interval | 設(shè)置采樣時間內(nèi)進行測量的頻率。 將間隔設(shè)置為秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 默認值是Instruments應(yīng)用程序的默認采樣間隔。 |
| -window period | 將性能測量限制在iprofiler運行的最后階段。 將周期設(shè)置為秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 如果未指定此選項,則會在整個運行過程中測量性能。注意:此選項只能與-timeprofiler和-systemtrace模板選項一起使用。 |
| -d path -o basename | 指定保存收集數(shù)據(jù)時使用的目標路徑和名稱。 默認路徑是當前工作目錄。 默認的基本名稱是進程名稱或進程ID |
| -instrument name | 指定要運行的儀器。 有效的名稱選項包括-activitymonitor,-allocations,-counters,-eventprofiler,-leaks,-systemtrace和-timeprofiler。至少必須列出一個模板。 您可以一次運行所有七個模板。 |
| -kernelstacks | 指定內(nèi)核堆棧僅用于回溯。如果既沒有指定-kernelstack也沒有指定-userandkernelstacks選項,則回溯僅包含用戶堆棧。 |
| -userandkernelstacks | 為backtraces指定內(nèi)核和用戶堆棧。如果既沒有指定-kernelstack也沒有指定-userandkernelstacks選項,則backtraces僅包含用戶堆棧。 |
| -pmc PMC_MNEMONIC | 與-counters一起使用時,指定要計數(shù)的事件的助記符。 多個助記符應(yīng)該用逗號分隔。 |
| -allthreadstates | 使Time Profiler模板能夠分析所有線程。 如果未指定此值,則Time Profiler只分析正在運行線程。 |
| -a process/pid | 附加到已經(jīng)運行的進程。 指定一個字符串將附加名稱以該字符串開頭的進程。 指定進程ID會將其附加到與該進程ID關(guān)聯(lián)的進程。-leaks選項要求您指定特定的單個進程或進程ID |
| executable [args..] | 導(dǎo)致目標進程在測量期間啟動。 列出可執(zhí)行文件和參數(shù),就好像它們是從命令行調(diào)用的一樣。 |
5. iprofiler Examples - iprofiler示例
以下是常見的iprofiler命令行示例列表。
本示例使用Time Profiler和Activity Monitor工具收集來自儀器中設(shè)置的當前采樣持續(xù)時間的所有正在運行的進程的數(shù)據(jù)。 收集的數(shù)據(jù)以allprocs.dtps格式保存到工作目錄。
iprofiler -timeprofiler -activitymonitor
以下示例使用Time Profiler工具打開并收集YourApp中的數(shù)據(jù)。 數(shù)據(jù)收集8秒鐘,數(shù)據(jù)保存在/temp/YourApp_perf.dtps。
iprofiler -T 8s -d /temp -o YourApp_perf -timeprofiler -a YourApp
以下示例使用Leaks 和 Activity Monitor工具從具有823進程ID的進程收集數(shù)據(jù)。 數(shù)據(jù)收集2500毫秒(2.5秒)并以YourApp_perf.dtps保存到工作目錄。
iprofiler -T 2500ms -o YourApp_perf -leaks -activitymonitor -a 823
以下示例使用Time Profiler和Allocations工具打開并收集YourApp中的數(shù)據(jù)。 數(shù)據(jù)按照在Instruments中設(shè)置的默認時間收集并保存在/tmp/allprocs.dtps中。
iprofiler -d / tmp -timeprofiler -allocations -a YourApp.app
以下示例使用Time Profiler和System Trace工具打開和收集/path/to中帶有參數(shù)arg1的YourApp中的數(shù)據(jù)。 數(shù)據(jù)收集15秒,但只保存最近2秒內(nèi)收集的數(shù)據(jù)。 數(shù)據(jù)以YourApp_perf.dtps的形式保存到工作目錄。
iprofiler -T 15 -I 1000ms -window 2s -o YourApp_perf -timeprofiler -systemtrace /path/to/Your.app arg1
Minimize Instruments Impact on Data Collection - 最小化儀器對數(shù)據(jù)采集的影響
Instruments旨在最大限度地減少其對數(shù)據(jù)收集的影響。 但是,通過改變一些基本設(shè)置,您可以進一步降低儀器對數(shù)據(jù)收集的影響。
您可以減小i許多儀器的采樣間隔,以便收集更多數(shù)據(jù)。 但是,由于采樣間隔較短而導(dǎo)致的高采樣率可能會導(dǎo)致幾個問題:
-
Processor time is required for every sample- 每個樣品需要處理器時間。 高采樣率使用更多的處理器時間。 -
Sample interval timing may not be consistent- 采樣間隔時間可能不一致。 中斷用于啟動每個采樣。 使用非常小的采樣間隔時,發(fā)生這些中斷時的變化可能會導(dǎo)致采樣率的顯著變化。 -
Small sample intervals cause more samples to be taken- 小的采樣間隔會導(dǎo)致采集更多的采樣。 每個樣本使用系統(tǒng)內(nèi)存,并且大量樣本快速占用內(nèi)存較少的機器上的可用內(nèi)存。
1. Run Instruments in Deferred Mode - 以延遲模式運行儀器
通過延遲數(shù)據(jù)分析來提高性能相關(guān)數(shù)據(jù)的準確性,直到您退出正在測試的應(yīng)用程序。通常,儀器會在您的應(yīng)用運行時分析和顯示數(shù)據(jù),以便您在收集數(shù)據(jù)時查看數(shù)據(jù)。執(zhí)行分析時,會通過占用CPU時間和內(nèi)存來降低目標進程速度,這會給您留下可能無法反映進程通常情況下的行為的測量結(jié)果。在延遲模式下運行儀器會延遲數(shù)據(jù)分析,直到數(shù)據(jù)收集完成,無論是在您的應(yīng)用程序運行完畢后還是在您單擊停止后。在延遲模式下,您被阻止與正在收集數(shù)據(jù)的儀器進行交互。
在延期模式下,儀器完成數(shù)據(jù)收集后,儀器會處理數(shù)據(jù)并將其顯示在屏幕上。推遲數(shù)據(jù)分析為數(shù)據(jù)收集過程的后期階段增加了時間,但它有助于確保與性能相關(guān)的數(shù)據(jù)的準確性。
To set deferred mode for Instruments - 為儀器設(shè)置延遲模式
- 1)選擇
Instruments > Preferences。

- 2)在
Recording窗格中,選中Always use deferred mode復(fù)選框

對于特別長的跟蹤,由延遲模式引起的延遲可能很大。 通過為僅需要非常精確的數(shù)據(jù)收集的跟蹤設(shè)置延遲模式來避免這種延遲。
To set deferred mode for a trace - 為跟蹤設(shè)置延遲模式
- 1)選擇
File > Record Options。

- 2)在出現(xiàn)的對話框中,選擇延遲模式復(fù)選框,然后單擊確定。

如果在Instruments偏好設(shè)置中啟用了Always use deferred mode,則此選項將被禁用。
后記
本篇主要介紹了記錄、暫停和停止跟蹤感興趣的給個贊或者關(guān)注~~~
