在指令列擷取系統追蹤記錄

systrace 指令會叫用 Systrace 工具,讓您可以在系統層級收集及檢查裝置上所有執行程序的時間資訊。

本文說明如何透過指令列產生 Systrace 報表。在執行 Android 9 (API 級別 28) 以上版本的裝置中,您也可以使用系統追蹤系統應用程式產生 Systrace 報告。

如要執行 systrace,請完成以下步驟:

  1. 在 Android Studio 中,下載並安裝最新的 Android SDK 工具
  2. 安裝 Python,然後將其加入工作站的 PATH 環境變數中。
  3. 新增 android-sdk/platform-tools/PATH 環境變數。此目錄包含由 systrace 程式呼叫的 Android Debug Bridge 二進位檔 (ADB)。
  4. 使用 USB 偵錯連線,連接執行 Android 4.3 (API 級別 18) 以上版本的裝置至您的開發系統。

請在 Android SDK 工具套件中,前往 android-sdk/platform-tools/systrace/ 路徑,即可找到 systrace 指令。

語法

如要產生應用程式的 HTML 報表,您必須使用下列語法在指令列中執行 systrace

python systrace.py [options] [categories]

舉例來說,下列指令會呼叫 systrace 以記錄裝置活動,並產生名為 mynewtrace.html 的 HTML 報告。此類別清單為大多數裝置的合理預設清單。

$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
    binder_driver hal dalvik camera input res memory

提示:如要查看追蹤記錄輸出內容中的任務名稱,您「必須」在指令參數中加入 sched 類別。

如要檢視連結裝置所支援的類別清單,請執行下列指令:

$ python systrace.py --list-categories

如果沒有指定任何類別或選項,systrace 會產生包含所有可用類別的報表並使用預設設定。您使用的連結裝置會決定可用的類別。

全域選項

全域選項 說明
-h | --help 顯示說明訊息。
-l | --list-categories 列出連結裝置可用的追蹤記錄類別。

指令和指令選項

指令和選項 說明
-o file 在指定的 file 中寫入 HTML 追蹤記錄報表。如未指定此選項,systrace 會將報表儲存到與 systrace.py 相同的目錄中,並將其命名為 trace.html
-t N | --time=N 追蹤記錄裝置活動 N 秒。如未指定此選項,systrace 會通知您在指令列中按下 Enter 鍵以結束追蹤記錄。
-b N | --buf-size=N 使用 N KB 的追蹤記錄緩衝區空間。此選項可讓您限制追蹤記錄期間收集的所有資料大小。
-k functions
| --ktrace=functions
追蹤特定核心函式活動,並以逗號分隔的清單指定。
-a app-name
| --app=app-name
啟用應用程式追蹤,並以程序名稱的逗號分隔清單指定。應用程式必須包含來自 Trace 類別的追蹤檢測呼叫。每次剖析應用程式時 (許多程式庫,例如 RecyclerView,包括可在啟用應用程式層級追蹤時,提供實用資訊的追蹤檢測呼叫),都應該指定此選項。詳情請參閱「定義自訂事件」。

如要在執行 Android 9 (API 級別 28) 以上版本的裝置中追蹤所有應用程式,請傳送萬用字元 "*" (包括引號)。

--from-file=file-path 透過檔案 (例如 TXT 檔案) 建立互動式 HTML 報表,並在其中加入原始追蹤記錄資料,而不是執行即時追蹤。
-e device-serial
| --serial=device-serial
在特定已連結裝置中執行追蹤記錄 (可使用其裝置序號加以識別)。
categories 為指定的系統程序加入追蹤記錄資訊,例如可算繪圖形的系統程序,您就可以加入 gfx。您可以運用 -l 指令執行 systrace,查看自己連結裝置可使用的服務清單。