Winscope でトレースをキャプチャする

ローカルで Winscope を実行するか、ウェブサーバーから Winscope にアクセスします。

Winscope を使用してトレースをキャプチャし、ローカルでの開発とデバッグに使用できます。Winscope は adb を使用しており、USB または Wi-Fi 経由でのデバイス接続に対応しています。

Winscope を起動すると、[Collect Traces] 画面が表示されます。

デバイスの接続

Winscope でのデバイスの接続には、Winscope プロキシまたはウェブデバイス プロキシを使用できます。デフォルトでは Winscope のホームページに Winscope プロキシの接続をセットアップする UI が表示されます。

トレースのキャプチャを開始するには、以下のデバイス接続方法のどちらかを選択してください。

Winscope プロキシのセットアップ

Winscope プロキシをセットアップする手順は次のとおりです。

  1. ホームページの [Collect Traces] の [Select connection type] プルダウンから [Winscope Proxy] を選択します。

    Winscope プロキシを使用してトレースをキャプチャする

    図 1. Winscope プロキシを使用してトレースをキャプチャする

  2. Winscope ADB Connect プロキシを起動し、次のコマンドを実行してブラウザから直接トレースをキャプチャします。

    python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
    
  3. 実行後に Winscope プロキシ トークンがターミナルに表示されます。

  4. Winscope ADB Connect プロキシを起動すると、画面は次のように変わります。プロキシへの最初の接続を確立するには、ステップ 3 の Winscope プロキシ トークンを入力し、[Connect] をクリックします。

    Winscope プロキシに接続する

    図 2. Winscope プロキシに接続する

ウェブデバイス プロキシのセットアップ

ウェブデバイス プロキシをセットアップする手順は次のとおりです。

  1. ホームページの [Collect Traces] の [Select connection type] プルダウンから [Web Device Proxy] を選択します。

    ウェブデバイス プロキシを使用してトレースをキャプチャする

    図 3. ウェブデバイス プロキシを使用してトレースをキャプチャする

  2. 使用するマシンにウェブデバイス プロキシ デーモンがない場合は、[Install] をクリックするか、インストーラを起動します。

  3. ダイアログでウェブデバイス プロキシへのオリジン アクセスを承認します。

    オリジン WDP アクセスを承認する

    図 4. オリジン アクセスを承認する

  4. 新しいデバイスに初めて接続するたびに、アクセスを承認します。承認するダイアログが自動的に表示されない場合は、デバイスの横にある lock_open アイコンをクリックします。

    wdp_unauth_device

    図 5. デバイスを承認する

トレース

トレースを収集する手順は次のとおりです。

  1. 接続時にキャプチャ プロセスを開始するには、ターゲットを設定し、設定を構成します。その後、[Start trace] をクリックしてキャプチャを開始します。

    Winscope でトレースを収集する

    図 6. Winscope でトレースを収集する

  2. キャプチャを停止するには、[End trace] をクリックします。

    Winscope でトレースを終了する

    図 7. Winscope でトレースを終了する

トレースのオプション

このセクションでは、トレースのタイプのオプションについて説明します。

画面の録画

Winscope では、複数のディスプレイの画面を録画できます。メニューから画面録画するディスプレイを選択します。ディスプレイを選択しなかった場合、アクティブなディスプレイがデフォルトで録画されます。

SurfaceFlinger

  • バッファサイズ: SurfaceFlinger トレースのメモリ内リングバッファのサイズを調整します。バッファが大きいほどより多くのデータを収集できますが、メモリ使用量は増加します。

  • 入力: サーフェスに入力データがある場合、入力ウィンドウの詳細を追跡します。

  • 合成: 合成タイプと表示領域をトレースします。

  • メタデータ: オフスクリーン レイヤを含む追加のサーフェス メタデータをトレースします。

  • HWC: 構造化されていない Hardware Composer の追加のメタデータをトレースします。

  • バッファのトレース: サーフェス上のバッファの変更をすべてトレースするよう SurfaceFlinger を構成します。デフォルトでは、SurfaceFlinger はジオメトリが変更された場合のみ新しい状態をトレースします。

  • 仮想ディスプレイ: トレース内の仮想ディスプレイのレイヤを含めます。

WindowManager

  • バッファサイズ: WindowManager トレースのメモリ内リングバッファのサイズを調整します。バッファが大きいほどより多くのデータを収集できますが、メモリ使用量は増加します。
  • トレースのタイプ: 状態を収集する頻度を定義します。

    • フレーム: このモードでは、WindowManager はフレームごとに 1 つの状態をダンプし、WindowManager の有効な状態のみがキャプチャされるようにします。このモードではパフォーマンス オーバーヘッドを最小限に抑えられます。
    • トランザクション: このモードでは、トランザクションが commit されるたびに WindowManager の状態が記録されます。フレーム内で複数のトランザクションを commit できるため、フレーム中に WindowManager の中間状態のデバッグが可能になります。ただし、このモードではフレームモードと比べてパフォーマンス オーバーヘッドが増加します。
  • トレースレベル: WindowManager トレースの詳細度を決定します。

    • 詳細: 各ウィンドウについてウィンドウと構成情報すべてが含まれます。このモードではメモリ使用量とパフォーマンス オーバーヘッドが最も大きくなります。
    • デバッグ: すべてのウィンドウの情報が含まれますが、オーバーライド構成がリクエストされている場合、ウィンドウ構成のみをログに記録します。
    • 重大: デバッグモードと同じ情報が含まれますが、可視ウィンドウのみが含まれます。メモリ使用量とパフォーマンス オーバーヘッドはこのモードが最小となります。

ダンプ

Winscope を使用して状態をダンプするには、ホームページの [Collect Traces] で [Dump] タブを選択し、[Dump state] をクリックします。

Winscope で状態をダンプする

図 8. Winscope で状態をダンプする

スクリーンショットの構成

Winscope では、複数のディスプレイのスクリーンショットを取得できます。メニューからスクリーンショットするディスプレイを選択します。ディスプレイを選択しなかった場合、アクティブなディスプレイのスクリーンショットが収集されます。