錄製追蹤記錄

想開始錄製一段追蹤記錄,請從 CPU 分析器上或下方的下拉式選單中選擇錄製設定,然後按一下「Record」

圖 1.CPU 分析器會顯示錄製狀態、時間長度和錄製類型。

與應用程式互動,然後在結束時按一下「停止」。分析器會自動在記錄窗格中顯示其追蹤資訊,如圖 3 所示:

圖 2.錄製方法追蹤後的 CPU 分析器畫面。

  1. 所選範圍:決定在記錄窗格中查看的已錄製時間段。第一次錄製追蹤記錄時,CPU 分析器會自動選取 CPU 錄製下的錄音檔全長。如果只要查看部分錄製時間段的追蹤記錄資料,請調整重點顯示區域的兩邊。
  2. 互動區塊: 顯示時間軸中的使用者互動和應用程式生命週期中大小事件。
  3. 執行緒區塊:顯示執行緒活動狀態 (例如執行中、睡眠等) 和呼叫表 (或稱作 System Trace 中的事件追蹤圖表)。
    • 使用滑鼠和鍵盤快速鍵來調整時間軸。
    • 按兩下執行緒名稱,或是在已選取執行緒的狀態下按 Enter 鍵將其展開或收合。
    • 選取執行緒,以便在分析窗格中查看額外資訊。想選取多個會話串,請按住 Shift 鍵或 Ctrl 鍵 (Mac 則是按住Command 鍵) 後一一點選。
    • 想在分析窗格中查看額外資訊,請選取方法呼叫 (或稱作 System Trace 追蹤事件)。
  4. 分析窗格:顯示您選取的時間範圍和及執行緒的追蹤資料,或是選擇的方法呼叫。在這個窗格中,您可以選擇檢視各個堆疊追蹤的方式 (使用分析分頁),以及評估執行時間的方法 (使用時間參考資料下拉式選單)。
  5. 分析窗格分頁:選擇顯示細部追蹤記錄的方式。想瞭解每一個選項的細節,請參考查看追蹤記錄
  6. 時間測量選單:選擇下列其一,來決定評估呼叫時間資訊的方式 (僅支援範例/追蹤 Java 方法):
    • 壁鐘時間:測得數值為實際經過的時間。
    • 執行緒時間:實際經過的時間,減去執行緒未耗用 CPU 資源的時間。任何呼叫的執行緒時間一律少於或等於壁鐘時間。計算執行緒時間可讓您更加瞭解特定方法或函式在執行緒中的實際 CPU 消耗量。
  7. 篩選器:根據函式、方法、類別或套件名稱篩選追蹤記錄資料。舉例來說,想要快速辨別出與特定呼叫相關的追蹤資料,可以直接在搜尋欄位中輸入名稱。若呼叫堆疊包含與搜尋字詞相符的呼叫、套件或類別,則在「Flame chart」分頁中會被重點強調。在「由上而下」和「由下而上」分頁中,系統會優先顯示呼叫堆疊,而非其他追蹤結果。您也可以勾選搜尋欄位旁適當的方格,來啟用下列選項:
    • 規則運算式:如要在搜尋結果中加入規則運算式,請選擇這個。
    • 比對大小寫:如果您的搜尋需要區分大小寫,請選擇這個。
提示:檢查 「執行緒」時間軸時,您可以使用下列快捷鍵:
  • 放大:按住 W 鍵,或按住 Ctrl 鍵 (等同於 Mac 上 Command 鍵) 時滾動滑鼠滾輪。
  • 縮小:按住 S 鍵,或按住 Ctrl 鍵 (等同於 Mac 上 Command 鍵) 時反方向滾動滑鼠滾輪。
  • 向左平移:按住 A 鍵,或按住空格鍵並將滑鼠向右拖曳。
  • 向右平移:按住 D 鍵,或按住空格鍵並將滑鼠向左拖曳。
  • 展開或收合執行緒:在執行緒名稱上按兩下,或選擇執行緒後按下 Enter 鍵。

選擇錄製設定

在開始錄製追蹤記錄資訊之前,請先針對您要擷取的分析資訊選擇適當的錄製設定:

  • Java 抽樣法:在執行 Java 程式碼的過程中,以固定頻率擷取應用程式的呼叫堆疊。分析器會比較擷取的資料組合,來得出應用程式 Java 程式碼執行作業的時間資料與資源使用狀況。

    其中一個取樣追蹤本身的問題,是如果應用程式在呼叫堆疊的前後兩次擷取分別處在不同的方法之中,分析器就不會記錄該次方法呼叫。如果您想使用這種生命週期較短的追蹤方法,建議使用檢測追蹤功能。

  • Java 追蹤法:在執行階段中檢測應用程式,來錄製每次方法呼叫的開頭和結尾的時間戳記。系統會收集並比較時間戳記來產生方法追蹤資料,包括時間資訊和 CPU 的使用狀況。

    請注意,每種檢測方法的間接成本都會降低執行階段的效能,也可能影響資料分析;當方法的生命週期較短,狀況會更明顯。此外如果您的應用程式在短時間內執行大量方法,分析器可能會迅速超出檔案大小限制,並有機會不能再錄製任何追蹤資料。

  • C/C++ 函式抽樣:擷取應用程式原始執行緒的追蹤記錄樣本。如要使用這項設定,您必須將應用程式部署至 Android 8.0 (API 層級 26) 以上版本的裝置上。

    內部作業上,這項設定會用 simpleperf 來追蹤應用程式的原始程式碼。如果您想為 simpleperf 指定額外選項,例如取樣裝置內多少 CPU,或是以高精確度標準來指定取樣時間長度,您可以從命令列中選用 simpleperf

  • 系統呼叫追蹤:擷取詳細資料,以便查看應用程式與系統資源的互動情形。您可以查看執行緒每個活動狀態的確切時間點和持續時長、視覺化 CPU 中各核心運作時的瓶頸位置,也能新增自訂追蹤記錄事件來進行分析。對效能分析和除錯來說,這類資訊可能極為重要。如要使用這項設定,您必須將應用程式部署至 Android 7.0 (API 層級 24) 以上版本的裝置上。

    使用這個追蹤設定時,您可以藉由檢測程式碼在分析器的時間軸中註記其為重要程式碼。如要檢測 C/C++ 程式碼,請使用 trace.h 提供的 原始追蹤 API。如要檢測 Java 程式碼,請使用 Trace 類別。更多資訊請參考檢測 app 程式碼

    這個追蹤記錄設定是以 systrace 為基礎。您可以使用 systrace 命令列工具來指定 CPU 分析器未提供的選項。systrace 提供的額外系統層級資料可協助您查看原始系統處理程序,以及除錯被暫停或延後的問題。

    您可以在 Android 9 (API 層級 28) 以上版本的裝置上,部署名為「系統追蹤」的系統應用程式,來錄製裝置上的系統追蹤

建立、編輯或查看檢視錄製設定

您可以在「CPU 錄製設定」對話方塊中建立、編輯,和檢視錄製設定。而對話方塊可以從 CPU 分析器頂端的錄製設定下拉式選單中選取「編輯設定」來打開。

如要檢視現有的記錄設定,請在「CPU 錄製設定」對話方塊的左側窗格中選取。

如要建立新的錄製設定,請按照下列指示操作:

  1. 按一下對話方塊左上角的「新增」。這將會建立一些新的預設設定。
  2. 命名設定。
  3. 選取一項「追蹤技術」
  4. 如想使用抽樣錄製設定,請以微秒 (μs) 為單位指定「抽樣間隔」。此數值為應用程式每兩次呼叫堆疊之間的間隔時長。指定的間隔時長越短,達到記錄資料量上限的速度就越快。
  5. 在處理已連線裝置的記錄資料時,以 MB 為單位,指定能錄製的檔案大小上限。停止錄製時,Android Studio 會解析資料,並將結果顯示在分析器視窗中。因此,當您增加上限並錄製大量資料,Android Studio 將需要特別長的時間來解析檔案,甚至會無法做出回應。

    注意:如果您使用的是 Android 8.0 (API 層級 26) 以上版本的連線裝置,追蹤資料的檔案大小數值將因沒有限制而被系統忽略。不過,您仍須注意裝置在每次錄製後收集的資料量:因為 Android Studio 可能無法解析太大量的追蹤記錄檔。比如說,如果您採用高頻度取樣的抽樣追蹤,或是在檢測追蹤時短時間內呼叫太多個方法,系統就會迅速產生大量追蹤記錄檔。

  6. 如要接受改動並繼續變更其他設定,請按一下「套用」。如要接受所有已套用的變更並關閉對話方塊,請按一下「確定」

使用 Debug API 錄製 CPU 活動

您可以使用 Debug API,讓應用程式能夠在 CPU 分析器中啟動和停止 CPU 錄製作業。

CPU 分析器會在應用程式呼叫時開始錄製 startMethodTracing(String tracePath),而再次呼叫,CPU 分析器便會停止錄製stopMethodTracing()。在錄製使用這個 API 觸發的 CPU 作業時,CPU 分析器會顯示「Debug API」 為作業中的 CPU 錄製設定。

如要使用 Debug API 管控 CPU 的錄製作業,請將檢測應用程式部署至 Android 8.0 (API 層級 26) 以上版本的裝置。

重要事項:Debug API 是有別於其他方式,專門用於啟動及停止 CPU 錄製作業。另有裝置啟動時錄製功能的,例如 CPU 分析器圖形使用者介面中的按鈕,和錄製設定中的設定 (setting)。

Debug API 中的 startMethodTracing(String tracePath) 方法是專為間隔時長較短,或難以手動啟動/停止錄製的狀況而設計。其緩衝區大小限制僅有 8 MB。如要進行較長時間的錄製,請使用 Android Studio 中的分析器使用者介面。

如需更多資訊,請參考檢測應用程式來產生追蹤記錄

錄製在應用程式啟動時的 CPU 活動。

如要在應用程式啟動時自動開始錄製 CPU 活動,請執行下列步驟:

  1. 依序選取「執行」>「編輯設定」
  2. 在「分析」分頁中,勾選「系統啟動時開始錄製方法追蹤記錄」 旁邊的方塊。
  3. 從選單中選取 CPU 錄製設定。
  4. 按一下「套用」
  5. 依序選取「執行」>「設定檔」,將應用程式部署至 Android 8.0 (API 層級 26) 以上版本的裝置。