インテル® VTune™ プロファイラー・ユーザーガイド

Android* システム上の Java* 解析を有効にする

Android* システムでインテル® VTune™ プロファイラーを使用して、Java* 解析を有効にするために必要な設定を調べます。

ルート化されたデバイスで Java* 解析を有効にする

デフォルトでは、インテル® VTune™ プロファイラーは、--jitvtuneinfo=src オプションを使用して、ターゲットの Android* デバイスにリモートコレクターをインストールします。ルート化されたデバイスの Java* プロファイル・オプションを変更するには、vtune-androidreg.bat (Windows*) または vtune-androidreg.sh (Linux*) スクリプトで --jitvtuneinfo=[jit|src|dex|none] オプションを使用してターゲットに手動で再インストールする必要があります。次に例を示します。

Windows*:

<install-dir >\bin32\vtune-androidreg.bat --package-command=install --jitvtuneinfo=src

Linux*:

<install-dir >/bin{32,64}/vtune-androidreg.sh --package-command=install --jitvtuneinfo=src

インテル® VTune™ プロファイラーは /data/local.prop ファイルを次のように更新します。

  1. コンパイル済みトレースに関する基本情報: root@android:/# cat /data/local.prop dalvik.vm.extra-opts=-Xjitvtuneinfo:jit

  2. JIT コードから Java* ソースコードへのマッピング、およびコンパイル済みトレースに関する基本情報: root@android:/# cat /data/local.prop dalvik.vm.extra-opts=-Xjitvtuneinfo:src

  3. JIT コードから DEX コードへのマッピング、およびコンパイル済みトレースに関する基本情報: root@android:/# cat /data/local.prop dalvik.vm.extra-opts=-Xjitvtuneinfo:dex

  4. JIT データ収集 (オプションを指定しないと、デフォルトでは JIT 収集は無効です): root@android:/# cat /data/local.prop dalvik.vm.extra-opts=-Xjitvtuneinfo:none

さらに、Dalvik JVM* が命令スケジュールをサポートする場合、dalvik.vm.extra-opts の最後に -Xnoscheduling を追加してそれを無効にします。次に例を示します。

root@android:/# cat /data/local.prop dalvik.vm.extra-opts=-Xjitvtuneinfo:src -Xnoscheduling

現在 Java* 解析には、インストルメント済みの Dalvik JVM* が必要です。第 4 世代インテル® Core™ プロセッサーで動作する Android* システム、または ART と Dalvik Java* を使用する Android* システムは、JIT プロファイルをサポートするように設計されていません。これらのシステムでは、--jitvtuneinfo=N を指定する必要はありません。

ヒント

logcat 出力 (adb logcat *:S dex2oat:I) に --generate-debug-info オプションがある場合、コンパイラーはこのオプションを使用します。

ART* コンパイラーで生成されたコードの Java* 解析を有効にする

ソースレベルの解析を有効にするには、インテル® VTune™ プロファイラーは解析されたバイナリーファイルのデバッグ情報を必要とします。デフォルトでは、ART コンパイラーは Java* コードのデバッグ情報を生成しません。利用シナリオに応じて、ART コンパイラーがデバッグ情報を生成する方法を選択できます。

Android* 6.0 Marshmallow 以前のリリースでは、次の例の --generate-debug-info オプションを --include-debug-symbols に置き換える必要があります。

説明

実行

.apk ファイルとしてインストールされたサードパーティー・アプリケーション、またはシステム・アプリケーションをプロファイルします。

  1. システムのプロパティー dalvik.vm.dex2oat-flags--generate-debug-info に設定します。

    adb shell setprop dalvik.vm.dex2oat-flags --generate-debug-info

  2. --compiler-filter=interpret-only オプションを使用する場合、最適化レベルを speed にします。

    adb shell setprop
    dalvik.vm.dex2oat-filter speed

  3. アプリケーションをインストール/再インストールします。

    adb shell install -r
    TheApp.apk

プライベート・アプリケーションの事前最適化が有効である場合 (device.mk で設定された LOCAL_DEX_PREOPT:=true)、Android* イメージをリビルドして .apk または .jar ファイルとしてインストールされたすべてのアプリケーションをプロファイルします。

  1. ホストシステムでは、Android* ディレクトリー構造の /build/core/dex_preopt_libart.mk ファイルを開きます。

  2. --no-generate-debug-info 行を --generate-debug-info に変更し、ファイルを保存します。

  3. Android* イメージをリビルドして、デバイスに書き込みます。

  4. PIC が設定されていない Android* イメージ (device.mkWITH_DEXPREOPT_PIC:=false プロパティーを設定) を使用する場合、patchoat コマンドで odex から classes.dex を生成します。classes.dex は、/data/dalvik-cache/x86/system@app@appname@appname.apk@classes.dex にあります。

プライベート・アプリケーションの事前最適化が無効である場合 (device.mk で設定された LOCAL_DEX_PREOPT:=false) に、Android* イメージをリビルドして、.apk または .jar ファイルとしてインストールされたすべてのアプリケーションをプロファイルします。

  1. システムのプロパティー dalvik.vm.dex2oat-flags--generate-debug-info に設定します。

    adb shell rm -rf /data/dalvik-cache/x86/system@app@webview@webview.apk@classes.dex
    adb shell setprop dalvik.vm.dex2oat-flags --generate-debug-info
  2. adb シェルを停止および開始します。

    adb shell stop
    adb shell start
  3. dex ファイルを生成します。

    adb shell ls /data/dalvik-cache/x86/system@app@webview@webview.apk@classes.dex
    adb pull /data/dalvik-cache/x86/system@app@webview@webview.apk@classes.dex

dalvikvm 実行形式ファイルによって実行されるアプリケーションをプロファイルします。

コンパイラー・オプション --generate-debug-info の後に -Xcompiler-option を追加します。アプリケーションがまだコンパイルされていないことを確認します。

rm –f /data/dalvik-cache/*/*TheApp.jar*
adb shell dalvikvm –Xcompiler-option --include-debug-symbols –cp TheApp.jar

システムとコアクラスをプロファイルします。

Java* コアクラスが /data/dalvik-cache/ サブディレクトリーにコンパイルされる場合、この操作が必要です。製造元により異なるディレクトリーに配置されることもあります。事前コンパイルされた boot.oat ファイルが /system/framework/x86 に配置される場合、Java* コアクラスはデバッグ情報を使用して再コンパイルできないため解決されません。

システムのプロパティー dalvik.vm.image-dex2oat-flags--generate-debug-info に設定して再コンパイルします。

adb shell stop
adb shell rm –f /data/dalvik-cache/*/*
adb shell setprop dalvik.vm.dex2oat-flags --generate-debug-info
adb shell setprop dalvik.vm.image-dex2oat-flags --generate-debug-info
adb shell start

システムクラスがコンパイルされる前にアプリケーションを実行する場合は、別のコンパイラー・オプション -Ximage-compiler-option --generate-debug-info を追加する必要があります。

adb shell rm –f /data/dalvik-cache/*/*
adb shell dalvikvm –Xcompiler-option --generate-debug-info -Ximage-compiler-option --generate-debug-info –cp TheApp.jar

関連情報