2016-07-22 17 views
2

我知道,有一種方法,看看哪些功能被稱爲日誌貓寫在上面的日誌信息爲每個函數這樣是否可以看到Logcat中調用哪些函數?

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.d("myTag","onDestroy function is called!"); 
    // some logic 
} 

但是,當你有更多的功能,它成爲刺激性。

所以,我想知道是否有辦法看到在adb-logcat中調用哪些函數,而無需爲每個函數編寫日誌消息。

我希望他們可以從堆棧中的某處獲取,但我找不到它。

+0

嘗試使用替代的logcat – SaravInfern

+0

斷點對此一看:http://stackoverflow.com/questions/421280/how-do -i-找到最呼叫者對的一方法,使用-堆棧跟蹤-或反射 – KishuDroid

回答

0

您可以使用這些

String name = new Object(){}.getClass().getEnclosingMethod().getName(); 

Thread.currentThread().getStackTrace(); 

一個更精緻的方式使用該

StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); 
StackTraceElement e = stacktrace[1]; //coz 0th will be getStackTrace so 1st 
String methodName = e.getMethodName(); 
System.out.println(methodName); 

來源:谷歌;)

0

除了打印登錄每個功能。我(或大多數人)會建議你進行調試。

要使用調試,首先要在每個要檢查的函數內創建斷點。要應用斷點,只需左鍵單擊代碼左側的區域(參考圖像,粉紅色圓圈表示斷點)。

enter image description here

然後使用調試已經成功運行你的應用程序按下此按鈕。

enter image description here

一旦第一種方法稱爲應用程序將暫停在斷點,那麼你就可以(如果你使用eclipse設置或F6)移動到下一行使用F8,移動到下一個斷點時,可以按F9(或者如果使用eclipse設置,則爲F8)。這種方式可以檢查所有被調用的函數。

如果您只是想確保某個特定函數被調用,那麼這種斷點方法非常有用。

除此之外,如果你仍然堅持知道你可以存儲堆棧跟蹤的所有功能的細節。

final StackTraceElement[] trace = new Throwable().getStackTrace()) 
    StackTraceElement STrace  = trace[1]; 
    String className = STrace.getMethodName(); 
2

您可以試試Hugo。在這種情況下,您必須僅使用@DebugLog註釋您的方法。然後Hugo會爲你生成日誌(並打印出參數並返回值!)。從GitHub例如:

@DebugLog 
public String getName(String first, String last) { 
    SystemClock.sleep(15); // Don't ever really do this! 
    return first + " " + last; 
} 

日誌輸出:

V/Example: ⇢ getName(first="Jake", last="Wharton") 
V/Example: ⇠ getName [16ms] = "Jake Wharton" 
相關問題