次のドキュメントhttp://developer.android.com/tools/debugging/debuggingに従って、Debug.startMethodTracing (アクティビティ onCreate) と Debug.stopMethodTracing (アクティビティ onDestroy) を使用して、アプリケーションのトレース ファイルを生成しようとしています。-tracing.html#creatingtracefiles .
物理デバイスでアプリケーションを実行すると、トレース ファイルが正常に作成されます。後でそれらに対して dmtracedump を実行してコール スタック ダイアグラムを生成しましたが、アプリケーション メソッドの呼び出しは含まれていません。
これをテストするために、単純な Android アプリケーションを作成し、マニフェストにデバッガブルを追加しました。
<application
...
android:debuggable="true">
2 つのテスト クラス A と B を作成しました。クラス A には 2 つのメソッド b() と c() があります。
public class A {
private int _i;
public A(){_i=0;}
public void b(){c();}
public void c(){for(int k=0;k<20;k++)_i++;}}
クラス B には単一のメソッド c() があります。
public class B {
public void c(){
(new A()).b();
A d = new A();
d.c();
}}
最後に、onCreate メソッドと onDestroy メソッドのメイン アクティビティで、トレースを開始しました。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Debug.startMethodTracing("debugtest");
A a;
for (int i = 0; i < 20; i++) {
a = new A();
a.b();
a.c();
}
(new B()).c();
}
@Override
public void onDestroy() {
super.onDestroy();
Debug.stopMethodTracing();
}
コールスタックダイアグラムで少なくとも Ab() および Ac() メソッド呼び出しを取得することを望んでいましたが、実行後:
adb pull sdcard/debugtest.trace . ; dmtracedump debugtest.trace -g tree.png
生成されたコール グラフは次のとおりです。
これはどのように機能するはずですか、つまり、アプリケーションメソッドの呼び出しではなく、Android の呼び出しを表示するだけですか、それとも何か不足していますか?
メソッド実行の排他的および包括的時間を取得することに主に関心があることに注意してください。