使用 Traceview 檢查追蹤記錄

Traceview 已淘汰。如果使用 Android Studio 3.2 以上版本,建議您改用 CPU 分析器以使用 Debug 類別、方法追蹤記錄、儲存 .trace 檔案,透過檢測應用程式的方式檢查 .trace 檔案,並檢查應用程式處理程序的及時 CPU 使用量。

Traceview 是可以透過圖形呈現方式提供追蹤記錄的工具。您可以使用 Debug 類別檢測程式碼以產生記錄檔。此追蹤方法非常準確,因為您可以指定程式碼中要開始及停止記錄追蹤資料的確切位置。如果您尚未產生這些追蹤記錄,並將這些記錄從已連結的裝置儲存至本機電腦,請參閱「檢測應用程式以產生追蹤記錄」。 使用 Traceview 檢查這些記錄檔,可協助您為應用程式偵錯並分析其效能。

提示:您可以使用 dmtracedump 從指令列產生追蹤記錄檔的圖形呼叫堆疊圖表。

如果您不需查看使用 Debug 類別檢測應用程式所記錄的追蹤記錄,則可使用 Android Studio 3.0 以上版本隨附的 CPU 分析器檢查應用程式的執行緒和記錄方法追蹤記錄。

使用 Traceview 開啟追蹤記錄

如要使用 Traceview 開啟 Android Studio 的追蹤記錄,請按照下列步驟操作:

  1. 啟動 Android 裝置監視程式
  2. 在 Android 裝置監視程式中,依序選取「File」(檔案) >「Open File」(開啟檔案)
  3. 前往你要檢查的 .trace 檔案。
  4. 按一下「Open」(開啟)。

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

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

Traceview 總覽

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

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

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

時間軸窗格

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

Traceview 時間軸窗格

圖 1. Traceview 時間軸窗格。

設定檔窗格

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

對於各個方法 (頂層節點),此表格會同時顯示其內含及專屬時間 (以毫秒為單位),以及總時間的百分比。「專屬時間」是執行方法本身的程式碼所耗費的時間,而「內含時間」則是指執行方法本身的程式碼,再加上執行其子項所耗費的時間。時間碼資訊也會按照 CPU 時間和即時時間回報。「CPU 時間」只會計算將執行緒主動使用 CPU 時間的時間,而「即時時間」則會提供從應用程式進入方法到離開該方法的絕對時間碼資訊 (不論執行緒是否啟用或處於休眠狀態)。

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

Traceview 設定檔窗格。

圖 2:Traceview 設定檔窗格。

Traceview 已知問題

Traceview 記錄無法妥善處理執行緒,因此導致出現以下問題:

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