使用 Traceview 檢查追蹤記錄

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 開啟追蹤記錄,請按照下列步驟操作:

  1. 啟動 Android 裝置監視器
  2. 在 Android 裝置監視器中,依序選取 [檔案] > [開啟檔案]
  3. 前往你要檢查的 .trace 檔案。
  4. 按一下 [開啟]。

注意:如果您要查看透過啟用程式碼縮減功能 (例如發布版本) 所建構應用程式的追蹤記錄,某些方法和成員名稱可能會經過模糊處理。您可以使用 ProGuard mapping.txt 檔案來找出原始未經過模糊處理的名稱。 如要進一步瞭解這個檔案,請參閱解碼模糊處理的堆疊追蹤

注意:從指令列執行的 traceview 已淘汰。

Traceview 總覽

開啟追蹤記錄後,Traceview 會使用以列兩個窗格顯示記錄檔資料:

  • 時間軸窗格,說明每個執行緒進入及結束方法的時間
  • 設定檔窗格:概略說明各執行緒在追蹤記錄期間的執行作業

以下各節提供 Traceview 輸出窗格的額外資訊。

時間軸窗格

圖 1 顯示時間軸窗格的特寫。每個執行緒的執行作業都會顯示在專屬的資料列中,而經過的時間會向右增加。每種方法會以不同顏色顯示。第一列下方的細線代表選取方法的子項 (從輸入項目到結束)。

Traceview 時間軸窗格

圖 1. Traceview 時間軸窗格。

設定檔窗格

如圖 2 所示,設定檔窗格會提供系統在追蹤記錄期間執行的各個方法,以及這些方法的執行時間。呼叫其他方法的方法稱為「父項」,而父項呼叫的方法稱為「子項」。按一下選取的方法,該方法就會同時顯示在父項和其子項的兩個獨立節點下方。

在每個方法 (頂層節點) 中,這個表格會同時顯示其內含時間和專屬時間 (以毫秒為單位),以及總時間的百分比。 「專屬時間」是執行方法本身程式碼的程式碼所耗費的時間,「內含時間」則是指執行方法本身的程式碼所花費的時間,再加上執行其子項花費的時間。系統也會按照 CPU 時間和即時資訊回報時間碼資訊。「CPU 時間」只會考量執行緒主動使用 CPU 時間的時間,而「即時」則會從應用程式輸入方法的時間點提供絕對時間資訊,不論執行緒是否處於有效或休眠狀態,系統都會結束該方法。

針對設定檔窗格中每個頂層節點,表格中的「呼叫 + 回覆,呼叫/總數」欄 (未顯示於圖 2) 會回報方法和遞迴呼叫的次數。或者,在父項和子項方法中,此欄會顯示在頂層節點中,該方法為子項或父系呼叫的呼叫次數。

Traceview 設定檔窗格,

圖 2. Traceview 設定檔窗格,

Traceview 已知問題

Traceview 記錄無法妥善處理執行緒,並導致下列問題:

  • 如果執行緒在剖析期間結束,則不會傳送執行緒名稱 (已在 Android 5.1 以上版本中修正);
  • VM 會重複使用執行緒 ID。如果執行緒停止並重新開始時,可能會取得相同的 ID。