The Android Developer Challenge is back! Submit your idea before December 2.

コマンドラインでシステム トレースをキャプチャする

systrace コマンドは、デバイス上で実行中のすべてのプロセスのタイミング情報をシステムレベルで収集して検査できる Systrace ツールを呼び出します。

このドキュメントでは、コマンドラインから Systrace レポートを生成する方法について説明します。Android 9(API レベル 28)以降を搭載しているデバイスの場合は、システム トレース システムアプリを使用して Systrace レポートを生成することもできます。

systrace を実行する手順は次のとおりです。

  1. Android Studio から、最新の Android SDK ツールをダウンロードしてインストールします。
  2. Python をインストールして、ワークステーションの実行パスにインクルードします。
  3. Android 4.3(API レベル 18)以降を搭載しているデバイスを、USB デバッグ接続経由で開発システムに接続します。

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
    

ヒント: トレース出力内にタスクの名前を表示するには、コマンド パラメータ内に sched カテゴリを含める必要があります。

使用しているコネクテッド デバイスがサポートするカテゴリのリストを表示するには、次のコマンドを実行します。

$ python systrace.py --list-categories
    

カテゴリやオプションを指定しなかった場合、systrace は、デフォルト設定を使用して、利用可能なすべてのカテゴリを含むレポートを生成します。利用可能なカテゴリは、使用しているコネクテッド デバイスによって異なります。

グローバル オプション

グローバル オプション 説明
-h | --help ヘルプ メッセージを表示します。
-l | --list-categories 使用しているコネクテッド デバイスで利用可能なトレース カテゴリをリスト表示します。

コマンドおよびコマンド オプション

コマンドおよびオプション 説明
-o file 指定されたファイル(file)に HTML トレース レポートを書き込みます。このオプションを指定しなかった場合、systrace は、レポートに trace.html という名前を付けて、systrace.py と同じディレクトリに保存します。
-t N | --time=N デバイス アクティビティを N 秒間トレースします。このオプションを指定しなかった場合、systrace は、コマンドラインで Enter キーを押してトレースを終了するよう求めます。
-b N | --buf-size=N N キロバイトのトレース バッファ サイズを使用します。このオプションを使用すると、トレース中に収集されるデータの合計サイズを制限できます。
-k functions
| --ktrace=functions
カンマ区切りリストで指定した特定のカーネル関数のアクティビティをトレースします。
-a app-name
| --app=app-name
プロセス名のカンマ区切りリストで指定したアプリのトレースを有効にします。対象となるアプリには、Trace クラスのトレース インストルメンテーション呼び出しが含まれている必要があります。アプリをプロファイリングするときは、常にこのオプションを指定する必要があります。RecyclerView など、多くのライブラリには、アプリレベルでトレースを有効にしたときに有益な情報を提供するトレース インストルメンテーション呼び出しが含まれています。詳細については、アプリコードをインストルメント化する方法をご覧ください。
--from-file=file-path ライブトレースを実行するのではなく、未加工トレースデータを格納した TXT ファイルなどのファイルからインタラクティブ HTML レポートを作成します。
-e device-serial
| --serial=device-serial
デバイス シリアル番号で識別される特定のコネクテッド デバイス上でトレースを実行します。
categories グラフィックをレンダリングするシステム プロセス用の gfx など、指定したシステム プロセスを対象とするトレース情報を格納します。-l コマンドを使用して systrace を実行すると、使用しているコネクテッド デバイスで利用可能なサービスのリストを表示できます。