Traceview 已淘汰。 如果您使用 Android Studio 3.2 以上版本,請改用 CPU Profiler 並檢測含 Debug
類別的應用程式以檢查擷取的 .trace
檔案、記錄新的方法追蹤記錄、儲存 .trace
檔案,然後檢查應用程式程序的即時 CPU 使用率。
Traceview 工具能以圖形方式呈現追蹤記錄。您可以使用 Debug
類別來檢測程式碼,藉此產生記錄檔。此追蹤方法非常準確,因為您可以指定程式碼中要開始及停止記錄追蹤資料的確切位置。如果您尚未產生這些追蹤記錄,並將這些記錄從已連結的裝置儲存至本機電腦,請參閱檢測應用程式以產生追蹤記錄。
使用 Traceview 檢查這些記錄檔有助您偵錯應用程式並剖析其效能。
提示:你可以使用 dmtracedump
從指令列產生追蹤記錄檔的圖形呼叫堆疊圖表。
如果您不需查看透過 Debug
類別檢測應用程式所記錄的追蹤記錄,則可使用 Android Studio 3.0 以上版本中隨附的 CPU 分析器檢查應用程式的執行緒和記錄方法追蹤記錄。
使用 Traceview 開啟追蹤記錄
如要透過 Android Studio 使用 Traceview 開啟追蹤記錄,請按照下列步驟操作:
- 啟動 Android 裝置監視器。
- 在 Android 裝置監視器中,依序選取 [檔案] > [開啟檔案]。
- 前往你要檢查的
.trace
檔案。 - 按一下 [開啟]。
注意:如果您要查看透過啟用程式碼縮減功能 (例如發布版本) 所建構應用程式的追蹤記錄,某些方法和成員名稱可能會經過模糊處理。您可以使用 ProGuard mapping.txt
檔案來找出原始未經過模糊處理的名稱。
如要進一步瞭解這個檔案,請參閱解碼模糊處理的堆疊追蹤。
注意:從指令列執行的 traceview
已淘汰。
Traceview 總覽
開啟追蹤記錄後,Traceview 會使用以列兩個窗格顯示記錄檔資料:
以下各節提供 Traceview 輸出窗格的額外資訊。
時間軸窗格
圖 1 顯示時間軸窗格的特寫。每個執行緒的執行作業都會顯示在專屬的資料列中,而經過的時間會向右增加。每種方法會以不同顏色顯示。第一列下方的細線代表選取方法的子項 (從輸入項目到結束)。
圖 1. Traceview 時間軸窗格。
設定檔窗格
如圖 2 所示,設定檔窗格會提供系統在追蹤記錄期間執行的各個方法,以及這些方法的執行時間。呼叫其他方法的方法稱為「父項」,而父項呼叫的方法稱為「子項」。按一下選取的方法,該方法就會同時顯示在父項和其子項的兩個獨立節點下方。
在每個方法 (頂層節點) 中,這個表格會同時顯示其內含時間和專屬時間 (以毫秒為單位),以及總時間的百分比。 「專屬時間」是執行方法本身程式碼的程式碼所耗費的時間,「內含時間」則是指執行方法本身的程式碼所花費的時間,再加上執行其子項花費的時間。系統也會按照 CPU 時間和即時資訊回報時間碼資訊。「CPU 時間」只會考量執行緒主動使用 CPU 時間的時間,而「即時」則會從應用程式輸入方法的時間點提供絕對時間資訊,不論執行緒是否處於有效或休眠狀態,系統都會結束該方法。
針對設定檔窗格中每個頂層節點,表格中的「呼叫 + 回覆,呼叫/總數」欄 (未顯示於圖 2) 會回報方法和遞迴呼叫的次數。或者,在父項和子項方法中,此欄會顯示在頂層節點中,該方法為子項或父系呼叫的呼叫次數。
圖 2. Traceview 設定檔窗格,
Traceview 已知問題
Traceview 記錄無法妥善處理執行緒,並導致下列問題:
- 如果執行緒在剖析期間結束,則不會傳送執行緒名稱 (已在 Android 5.1 以上版本中修正);
- VM 會重複使用執行緒 ID。如果執行緒停止並重新開始時,可能會取得相同的 ID。