2012-08-09 80 views
7

我正在尋找一種方法來獲取堆棧跟蹤,當我在某個斷點時。這可能嗎?理想情況下,不必崩潰應用程序並修改代碼。我試着玩Android調試器,但找不到任何有用的東西。有沒有辦法按需打印堆棧跟蹤?

原因是,有時我不確定應用程序是如何到達代碼中的某個點,所以我接受其他建議,以幫助我跟蹤方法調用。

回答

12

這可以用Java來完成:

new Throwable().printStackTrace(); 

在Eclipse中,如果創建了「表達」與在Expressions鑑於Debug角度的代碼,將打印當前的堆棧跟蹤(即堆棧跟蹤的您的代碼停止的斷點)在Console視圖中。

+0

謝謝,你的意思是在表達式視圖?我應該輸入什麼代碼,與斷點一致?我試過了,但在控制檯視圖和LogCat中都沒有出現任何東西。 – JohnEye 2012-08-09 14:02:41

+0

在「表達式」視圖中,單擊「添加新表達式」並粘貼我提供的代碼('new Throwable()。printStackTrace();')。點擊「Enter」。切換到「控制檯」視圖,你應該看到一個堆棧跟蹤。 這對我來說在vanilla Eclipse Juno上適用,只用'main(String [])'方法調試簡單的Java應用程序。 – npe 2012-08-09 14:05:46

+0

哦,當然,我只是在密集:-)應該發生在我身上,我想讓執行您發佈的代碼。非常感謝,像魅力一樣工作。 – JohnEye 2012-08-09 14:11:02

4
Log.e("AppName", "Debug exception", new Exception()); 
2

最簡單的方法是拋出異常,立即捕捉並使用printStackTrace()

您也可以嘗試Thread.currentThread().getStackTrace(),讓你在情況下StackTraceElement[]要到別的除了具有文字表述是printStackTrace()一樣。

+2

你不必扔掉它。看到我的答案;-) – npe 2012-08-09 13:46:29

+0

非常真實,我總是忘記:D – f1sh 2012-08-09 13:48:12