INSTRUMENTS調試工具的使用(十七) —— 通常任務之記錄、暫停和停止跟蹤(六)

版本記錄

版本號 時間
V1.0 2018.06.13

前言

我們在做app的時候,不是做完功能就結束了,很多時候是需要進行檢查和優化的,而xcode自帶了一個很好的檢查工具,可以檢測內存泄漏。還可以查看哪一個方法比較耗時。還可以檢測離屏渲染等等,隨后的幾篇我們就說一下這個工具的使用。感興趣的可以看這幾篇。
1.INSTRUMENTS調試工具的使用(一)
2.INSTRUMENTS調試工具的使用(二)
3.INSTRUMENTS調試工具的使用(三)
4.INSTRUMENTS調試工具的使用(四)
5.INSTRUMENTS調試工具的使用(五)
6.INSTRUMENTS調試工具的使用(六)
7.INSTRUMENTS調試工具的使用(七)
8.INSTRUMENTS調試工具的使用(八)
9.INSTRUMENTS調試工具的使用(九)
10. INSTRUMENTS調試工具的使用(十)
11. INSTRUMENTS調試工具的使用(十一) —— 簡介(一)
12. INSTRUMENTS調試工具的使用(十二) —— 通常任務之啟動Instruments(一)
13. INSTRUMENTS調試工具的使用(十三) —— 通常任務之簡單了解Instruments(二)
14. INSTRUMENTS調試工具的使用(十四) —— 通常任務之創建、保存和打開跟蹤文檔(三)
15. INSTRUMENTS調試工具的使用(十五) —— 通常任務之指定目標應用和設備(四)
16. INSTRUMENTS調試工具的使用(十六) —— 通常任務之訪問和使用個別儀器(五)

Record, Pause, and Stop Traces - 記錄、暫停和停止跟蹤

儀器在運行時收集有關您的應用的信息。 本章介紹如何指導儀器收集信息。


Record a Trace - 記錄跟蹤

當你準備好分析你的應用時,你開始記錄。 在記錄時,跟蹤文檔中的instruments將根據其配置監控您的應用。 發生記錄時,時間軸窗格和詳細信息窗格將更新以提供捕獲內容的實時視圖。

To begin recording - 開始錄制

執行以下操作之一:

  • 單擊跟蹤文檔工具欄中的記錄按鈕。
  • 選擇File> Record Trace(或按Command-R)。

再次點擊Command-R停止記錄。

1. Set Recording Options - 設置錄制選項

設置記錄選項以改善跟蹤文檔中的數據收集。 記錄前選擇延遲時間,要記錄的時間長度,要保存的數據量或是否以延遲模式記錄數據。

To set the recording options for a trace - 設置跟蹤的錄制選項

  • 1)選擇File> Record Options打開Record Options對話框
  • 2)根據需要自定義設置

選項包括:

  • Time limit - 時間限制:儀器將記錄數據的最長時間(以秒為單位)。
  • Window limit - 窗口限制:將被保存的數據的最大持續時間(以秒為單位)。 如果記錄的持續時間超過指定窗口限制的時間(例如,超過4秒),則僅保存最近4秒內收集的數據。
  • Deferred mode - 延遲模式:選擇推遲數據分析,直到數據收集完成。 這可以導致更快和更準確的數據收集,因為更多的系統資源針對正在記錄的過程。

注意:如果不適用于跟蹤文檔中的工具或儀器中的首選項配置,則可能禁用此對話框中的某些選項。 要確定選項被禁用的原因,請將鼠標懸停在該選項上幾秒鐘以查看其工具提示。OS X 10.7或更高版本以及iOS 5或更高版本支持Window Limit

  • 3)點擊OK關閉Record Options對話框。

Pause a Trace - 暫停跟蹤

如有必要,您可以暫停錄制并在稍后再次恢復。

To pause an active recording - 暫停活動錄制

執行以下操作之一:

  • 單擊跟蹤文檔工具欄中的暫停按鈕。
  • 選擇File> Pause Trace(或按Shift-Command-R)。

Stop a Trace - 停止跟蹤

一旦記錄了所需的數據,請停止記錄,以便開始分析收集的數據。

To stop an active recording - 停止活動錄制

執行以下操作之一:

  • 單擊跟蹤文檔工具欄中的停止按鈕。
  • 選擇File > Stop Trace(或按Command-R)。

Profile from the Dock - Dock中Profile

您可以通過從Dock中的Instruments應用程序圖標觸發Time Profiler來自動記錄后臺中的某些事件。

To collect Time Profiler information from the Dock - 從Dock中收集Time Profiler信息

  • 1)打開Instruments,按住Control鍵并點按Dock中的Instruments圖標。
  • 2)在出現的快捷菜單中,選擇進程配置文件開始錄制。

選項包括:

  • System Time Profile - 系統時間分析。 開始分析所有系統進程。
  • Time Profile Specific Process - 時間分析特定過程。 使用子菜單中的特定應用程序啟動Time Profiler儀器。
  • Automatically Time Profile Spinning Applications - 自動時間輪廓旋轉應用程序。 自動配置文件阻止(旋轉)的應用程序在未來。
  • Allow Tracing of Any Process (10 hours) - 允許追蹤任何進程(10小時)。 跟蹤在接下來的10個小時內發生的任何過程。 在10個小時內必須輸入密碼。

注意:以這種方式記錄的數據以.dtps格式保存到?/ Library / Application Support / Instruments / Unimported /


Profile from Xcode - 從Xcode中Profile

儀器是Xcode開發工作流程的關鍵組件,您可以在構建和測試您的應用程序時直接從Xcode啟動它。

1. Profile from the build and product menus - 構建和產品菜單中的配置文件

Xcode構建菜單允許您運行,測試和分析您的應用程序。 它還可以讓你用儀器來分析你的應用程序。

To profile your app from the Xcode build and product menus - 從Xcode構建和產品菜單中分析您的應用程序

  • 1)在Xcode中打開一個應用程序項目。

  • 2)執行以下操作之一:

  • 點擊并按住Xcode主窗口中的構建菜單,然后從出現的菜單中選擇配置文件。

  • 選擇Product > Profile (or press Command-I)

儀器啟動,并出現分析模板選擇對話框。 請注意,您的應用程序是在目標設備和進程列表中自動選擇的。

To use a default template when profiling from the Xcode build and product menus - 從Xcode構建和產品菜單進行分析時使用默認模板

  • 1)在Xcode中打開一個應用程序項目。
  • 2)執行以下操作之一打開方案編輯器對話框:
    • 從Xcode主窗口工具欄中的目標設備列表中選擇Edit Scheme
  • 選擇Product > Scheme > Edit Scheme,或按命令Command–Less Than (<)

  • 3)在方案編輯器對話框的邊欄中單擊配置文件。

  • 4)從Instrument彈出式菜單中選擇所需的分析模板
  • 5)點擊關閉。

現在,無論何時profile應用程序,Instruments都會自動在您在方案編輯器對話框中選擇的模板中打開它,并開始分析。

2. Profile from Xcode gauges while debugging - 在調試過程中從Xcode gauges配置文件

Xcode調試導航器包含幾個測量儀,用于在測試和調試時監視應用程序。 這些儀表跟蹤各種因素,包括CPU使用率,內存和能量影響,并可以提醒您潛在的問題,這些問題可能會影響性能,功耗等等。 如果您在測試應用程序時發現想要進一步調查的趨勢,則可以將監視轉換到儀器以進行更詳細的分析。

To initiate profiling from an Xcode gauge - 從Xcode測量儀開始分析

  • 1)在Xcode中打開一個應用程序項目并運行它。

  • 2)在您的應用程序正在運行時,通過執行以下操作之一來顯示調試導航器:

  • 單擊導航器選擇欄中的Debug Navigator按鈕。

  • 選擇View > Navigators > Show Debug Navigator (or press Command-6)
  • 3)在調試導航器中單擊所需的量表。
  • 4)在主編輯器中單擊儀器的儀器配置文件按鈕。

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

  • 5)當出現提示時,選擇是否將當前正在運行的應用程序實例轉移到Instruments或停止應用程序并使用Instruments啟動它的新實例。

在這兩種情況下,請注意Xcode停止分析您的應用程序,啟動工具并啟動分析。 如果您選擇傳輸會話,Instruments將開始分析當前狀態下的應用程序。


Profile from the Command Line - 從命令行進行分析

1. Profile with instruments - 使用instruments分析

使用instruments命令行工具(參見instruments(1) Mac OS X Developer Tools Manual Page),使用指定模板對應用程序進行分析,而無需啟動儀器。 在分析過程中收集的數據將保存在.trace文件中的指定目錄中。 分析完成后,您可以使用instruments打開記錄的數據文件以查看數據的可視表示。

To profile with instruments - 用儀器分析

  • 1)打開終端,在/ Applications / Utilities中。
  • 2)輸入instruments命令收集數據。

例如,以下命令使用Allocations模板對應用程序進行分析并將結果保存到.trace文件中的桌面。

instruments -t "Allocations" -D ~/Desktop/
.trace
  • 3)打開Instruments,然后選擇File > Open
  • 4)找到您保存的.trace文件,然后單擊打開。

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

2. instruments Options - instruments選項

instruments提供以下一組配置選項來定義要收集的數據。

配置選項 描述
-t template 當分析你的app時,要使用的分析模板的名字或者路徑
-s 返回所有安裝的分析模板的列表
-D document .trace文檔要保存的路徑,如果文件已經存在,當再次運行時,會將新記錄的數據拼接到原有數據之后
-l # 在結束之前,記錄總的時間,以毫秒計算,如果不提供,記錄會無限期發生,直到該應用程序被手動終止。
-i # 要使用記錄的instrument的索引
-p pid 要記錄的app的進程ID
application 要記錄的app的路徑
-w hardware device 要target的設備的ID
-e variable value 分析時要應用的環境變量
argument 要傳遞給正在分析的app的命令行參數,如果需要,可以指定多個參數
-v 在分析時啟用詳細日志記錄

3. Collect and view data with iprofiler - 使用iprofiler收集和查看數據

使用iprofiler命令行工具(請參閱iprofiler(1) Mac OS X Developer Tools Manual Page)來測量應用程序的性能,而無需啟動儀器。收集性能數據后,將其導入儀器以查看數據的直觀表示。由iprofiler收集的數據保存在一個可由Instrument打開的.dtps包中。 iprofiler支持以下類型的分析工具:

  • Activity Monitor - 活動監視器。監視整個系統活動和統計信息,包括CPU,內存,磁盤和網絡。活動監視器還監視所有現有進程和父/子流程層次結構。
  • Allocations - 分配。通過跟蹤allocations來測量堆內存使用情況,包括按類分配的特定對象allocations。分配也可以按區域記錄虛擬內存統計數據。
  • Counters - 計數器。使用基于時間或事件的采樣方法收集性能監視器計數器事件。
  • Event Profiler - 事件分析器。通過低開銷,基于事件的采樣來對系統CPU上運行的進程進行采樣。
  • Leaks - 泄漏。測量一般內存使用情況,檢查泄漏的內存,并提供關于對象分配的統計信息以及所有活動分配和泄漏塊的內存地址歷史記錄。
  • System Trace - 系統跟蹤。提供有關系統行為的全面信息。系統跟蹤顯示線程調度的時間,并通過系統調用或內存操作顯示從用戶代碼到系統代碼的所有轉換。
  • Time Profiler - 時間分析器。對系統CPU上運行的進程執行低開銷,基于時間的采樣。

To collect and view data from iprofiler - 從iprofiler中收集和查看數據

  • 1)打開終端,在/ Applications / Utilities中。
  • 2)輸入一個iprofiler命令來收集數據。

例如,以下命令在您的應用上執行Activity Monitor跟蹤5秒鐘,并將結果保存到桌面上的.dtps文件。

iprofiler -activitymonitor -T 5s -d?/ Desktop /
  • 3)打開Instruments,然后選擇File > Open
  • 4)找到你保存的.dtps文件,點擊打開

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

4. iprofiler Options - iprofiler選項

iprofiler提供下面的配置選項以定義要收集的數據。

配置選項 描述
-l 提供所有支持的instruments 列表
-L 提供所有支持的instruments 列表,以及每種模板可以做什么的描述
-legacy 執行/ usr / bin / instruments中的Instruments命令行接口。
-T duration 設置數據記錄的時間長度,設置持續時間以秒(ns或者n),毫秒(nm或nms),微秒(nu或nus)計算,默認是10s
-I interval 設置采樣時間內進行測量的頻率。 將間隔設置為秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 默認值是Instruments應用程序的默認采樣間隔。
-window period 將性能測量限制在iprofiler運行的最后階段。 將周期設置為秒(ns或n),毫秒(nm或nms)或微秒(nu或nus)。 如果未指定此選項,則會在整個運行過程中測量性能。注意:此選項只能與-timeprofiler-systemtrace模板選項一起使用。
-d path -o basename 指定保存收集數據時使用的目標路徑和名稱。 默認路徑是當前工作目錄。 默認的基本名稱是進程名稱或進程ID
-instrument name 指定要運行的儀器。 有效的名稱選項包括-activitymonitor,-allocations,-counters,-eventprofiler,-leaks,-systemtrace-timeprofiler。至少必須列出一個模板。 您可以一次運行所有七個模板。
-kernelstacks 指定內核堆棧僅用于回溯。如果既沒有指定-kernelstack也沒有指定-userandkernelstacks選項,則回溯僅包含用戶堆棧。
-userandkernelstacks backtraces指定內核和用戶堆棧。如果既沒有指定-kernelstack也沒有指定-userandkernelstacks選項,則backtraces僅包含用戶堆棧。
-pmc PMC_MNEMONIC -counters一起使用時,指定要計數的事件的助記符。 多個助記符應該用逗號分隔。
-allthreadstates 使Time Profiler模板能夠分析所有線程。 如果未指定此值,則Time Profiler只分析正在運行線程。
-a process/pid 附加到已經運行的進程。 指定一個字符串將附加名稱以該字符串開頭的進程。 指定進程ID會將其附加到與該進程ID關聯的進程。-leaks選項要求您指定特定的單個進程或進程ID
executable [args..] 導致目標進程在測量期間啟動。 列出可執行文件和參數,就好像它們是從命令行調用的一樣。

5. iprofiler Examples - iprofiler示例

以下是常見的iprofiler命令行示例列表。

本示例使用Time ProfilerActivity Monitor工具收集來自儀器中設置的當前采樣持續時間的所有正在運行的進程的數據。 收集的數據以allprocs.dtps格式保存到工作目錄。

iprofiler -timeprofiler -activitymonitor

以下示例使用Time Profiler工具打開并收集YourApp中的數據。 數據收集8秒鐘,數據保存在/temp/YourApp_perf.dtps

iprofiler -T 8s -d /temp -o YourApp_perf -timeprofiler -a YourApp

以下示例使用LeaksActivity Monitor工具從具有823進程ID的進程收集數據。 數據收集2500毫秒(2.5秒)并以YourApp_perf.dtps保存到工作目錄。

iprofiler -T 2500ms -o YourApp_perf -leaks -activitymonitor -a 823

以下示例使用Time ProfilerAllocations工具打開并收集YourApp中的數據。 數據按照在Instruments中設置的默認時間收集并保存在/tmp/allprocs.dtps中。

iprofiler -d / tmp -timeprofiler -allocations -a YourApp.app

以下示例使用Time ProfilerSystem Trace工具打開和收集/path/to中帶有參數arg1YourApp中的數據。 數據收集15秒,但只保存最近2秒內收集的數據。 數據以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 - 最小化儀器對數據采集的影響

Instruments旨在最大限度地減少其對數據收集的影響。 但是,通過改變一些基本設置,您可以進一步降低儀器對數據收集的影響。

您可以減小i許多儀器的采樣間隔,以便收集更多數據。 但是,由于采樣間隔較短而導致的高采樣率可能會導致幾個問題:

  • Processor time is required for every sample - 每個樣品需要處理器時間。 高采樣率使用更多的處理器時間。
  • Sample interval timing may not be consistent - 采樣間隔時間可能不一致。 中斷用于啟動每個采樣。 使用非常小的采樣間隔時,發生這些中斷時的變化可能會導致采樣率的顯著變化。
  • Small sample intervals cause more samples to be taken - 小的采樣間隔會導致采集更多的采樣。 每個樣本使用系統內存,并且大量樣本快速占用內存較少的機器上的可用內存。

1. Run Instruments in Deferred Mode - 以延遲模式運行儀器

通過延遲數據分析來提高性能相關數據的準確性,直到您退出正在測試的應用程序。通常,儀器會在您的應用運行時分析和顯示數據,以便您在收集數據時查看數據。執行分析時,會通過占用CPU時間和內存來降低目標進程速度,這會給您留下可能無法反映進程通常情況下的行為的測量結果。在延遲模式下運行儀器會延遲數據分析,直到數據收集完成,無論是在您的應用程序運行完畢后還是在您單擊停止后。在延遲模式下,您被阻止與正在收集數據的儀器進行交互。

在延期模式下,儀器完成數據收集后,儀器會處理數據并將其顯示在屏幕上。推遲數據分析為數據收集過程的后期階段增加了時間,但它有助于確保與性能相關的數據的準確性。

To set deferred mode for Instruments - 為儀器設置延遲模式

  • 1)選擇Instruments > Preferences
  • 2)在Recording窗格中,選中Always use deferred mode復選框

對于特別長的跟蹤,由延遲模式引起的延遲可能很大。 通過為僅需要非常精確的數據收集的跟蹤設置延遲模式來避免這種延遲。

To set deferred mode for a trace - 為跟蹤設置延遲模式

  • 1)選擇File > Record Options
  • 2)在出現的對話框中,選擇延遲模式復選框,然后單擊確定。

如果在Instruments偏好設置中啟用了Always use deferred mode,則此選項將被禁用。

后記

本篇主要介紹了記錄、暫停和停止跟蹤感興趣的給個贊或者關注~~~

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念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

推薦閱讀更多精彩內容