Androidネイティブコードプロファイリングを表示する方法は?
-
23-09-2019 - |
質問
./emulator-traceプロファイル-AVD emulator_15でエミュレータを開始しました。次に、トレースファイルを〜/.android/avd/rodgers_emulator_15.avd/traces/profileに追跡しました。qtrace.bb、qtrace.exc、qtrace.insn、qtrace.method、qtrace.pid、qtrace 。静的。これらのファイルをどうするかわからない。すべてのファイルでDMTraceDumpとTraceviewの両方を試しましたが、何でもできる出力を生成するものはありません。
Androidでネイティブメソッド呼び出しで取られた時間の割合を表示するにはどうすればよいですか?
解決
使用する必要があります tracedmdump
出力を変換します。これは、で定義されているシェル関数です build/envsetup.sh
完全なAndroidソース。 SDKを使用している場合、完全な木から構築するのではなく、これが機能するかどうかはわかりません。
(ソースがなく、TracedMdump関数を覗き込みたい場合は、それを見ることができます ここ.)
使用した場合 emulator -trace profile
, 、走るでしょう tracedmdump profile
. 。これにより、さまざまなバイナリを掘り下げてシンボリック情報を取得し、トレースデータに関連付け、HTMLサマリーとトレースビュー互換トレースファイルを生成します。
VMはプロファイリングを有効にするとよりゆっくりと実行されることは注目に値します(インタープリターはすべてのメソッド呼び出しと返品でオーバーヘッドを持ち、遅い「デバッグ」インタープリターで実行されています)。結論を描くときは注意してください。
一般的なコメント:F9またはメソッドの1つを使用することを忘れないでください。 -trace
フラグは機能を有効にするだけです。
他のヒント
これらの6つのファイルを使用するには、read_pid、read_trace、profile_traceなどのdmtracedumpと同じディレクトリに他のスクリプトがあります。uは最初に6つのファイルを含むトレースディレクトリでpost_traceを実行する必要があります。それらは、各基本ブロックが実行される頻度、それらが属するPIDなどのプロファイル情報を取得します。