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

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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) 以上版本的裝置至您的開發系統。

systrace 指令於 Android SDK 工具套件中提供,並且位於 android-sdk/platform-tools/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,以查看連接裝置的可用服務清單。