我試圖根據以下文檔http://developer.android.com/tools/debugging/debugging-tracing.html#creatingtracefiles爲使用Debug.startMethodTracing(on activity onCreate)和Debug.stopMethodTracing(on activity onDestroy)上的應用程序生成跟蹤文件。Android調試跟蹤不包含特定於應用程序的方法調用
我在物理設備上運行應用程序,併成功創建跟蹤文件。後來我在它們上運行dmtracedump來生成一個調用堆棧圖,但它不包含我的任何應用程序方法調用。
爲了測試這一點,我創建了一個簡單的Android應用程序,加入debbuggable到清單:
<application
...
android:debuggable="true">
創建兩個測試類A和B. A類有兩個方法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();
}}
最後在上鄰的主要活動n創建和的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();
}
我希望得到至少抗體()和AC()方法調用堆棧圖要求,但運行後:
adb pull sdcard/debugtest.trace . ; dmtracedump debugtest.trace -g tree.png
生成調用關係圖如下:
這是它是如何工作的,即只顯示Android的電話,而不是應用程序的方法調用,鄰我是否錯過了什麼?
請注意,我最感興趣的是檢索方法執行的獨佔和包含時間。
感謝您的回答,但我更感興趣的包容性/排他性時間(即使與開銷)和調用圖。此外,我不想更改任何代碼,除了調試函數調用。 – 4knahs