從調試打印輸出打印堆棧跟蹤的最簡單方法是什麼?通常在測試期間,您想知道導致出現調試消息的情況的調用堆棧。如何在java中添加堆棧跟蹤到我的調試打印輸出
10
A
回答
8
2
您應該捕獲try-catch塊中的異常。
e.getStackTrace();
返回StackTraceElement [],然後您可以解釋。
另外:
e.printStackTrace()
會...打印堆棧跟蹤。
4
只是創造一個任意異常的伎倆對我來說:
System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
3
以及什麼@jjnguy說,如果你沒有一個例外,你也可以撥打Thread.getStackTrace()。
4
如果你想保存堆棧跟蹤到一個字符串,你可以做到這一點;
String exception = "";
for (StackTraceElement element : e.getStackTrace())
exception += element.toString() + "\n";
其中e很明顯是一個例外。
此外,聽起來很奇怪自動生成一個自己的異常只是爲了找到調試的堆棧跟蹤。獲取Eclipse並使用它的調試模式,這真的很棒。
16
如果您使用log4j的
Exception e = new Exception();
log.error("error here", e);
將打印堆棧跟蹤到你的日誌。
1
只是因爲我需要它自己:
至於靈感答案How do I find the caller of a method using stacktrace or reflection?,你可以檢索使用
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
然後你處理打印調用堆棧和/日誌不管你有興趣瞭解更多的工作比使用Thread.dumpStack()
,但更靈活。
1
要簡單地打印出當前堆棧跟蹤到stderr,您可以撥打:
Thread.dumpStack();
它本身只是調用:
new Exception("Stack trace").printStackTrace();
輸出到標準輸出,而不是標準錯誤,通過System.out
到printStackTrace()
:
new Exception("Stack trace").printStackTrace(System.out);
相關問題
- 1. 如何在java中打印堆棧跟蹤到stdout進行調試?
- 2. 打印堆棧跟蹤
- 3. 打印堆棧跟蹤obfusated
- 4. 如何打印StackOverflowException的堆棧跟蹤
- 5. 打印堆棧跟蹤到JavaFX中
- 6. Java異常堆棧跟蹤不打印
- 7. 如何打印Groovy堆棧跟蹤?
- 8. 在JSP中打印堆棧跟蹤
- 9. 在arm-linux中打印堆棧跟蹤
- 10. 調試一些不打印任何堆棧跟蹤的代碼
- 11. 如何在java logback中打印自定義堆棧跟蹤?
- 12. 打印堆棧跟蹤到文件
- 13. 如何打印完整的堆棧跟蹤Java中
- 14. 調試堆棧跟蹤?
- 15. 調試堆棧跟蹤
- 16. 僅在級別調試時打印堆棧跟蹤
- 17. 在C++(MSVC)打印堆棧跟蹤?
- 18. 在Mingw打印堆棧跟蹤
- 19. 打印堆棧跟蹤參數的值
- 20. 打印異常的堆棧跟蹤
- 21. 如何讓JBoss在我的server.log文件中打印出異常堆棧跟蹤?
- 22. 如何將堆棧跟蹤打印到日誌文件中?
- 23. Android Log.X不打印堆棧跟蹤
- 24. Log4j不打印堆棧跟蹤
- 25. 打印堆棧跟蹤元素異常
- 26. 從C#打印堆棧跟蹤信息
- 27. 使用CORBA時打印堆棧跟蹤
- 28. 如何在Eclipse插件中打印到Java堆棧跟蹤控制檯?
- 29. 如何打印堆棧跟蹤到Cocoa的控制檯/日誌?
- 30. 如何在自定義異常中打印堆棧跟蹤?
你應該有理由不要使用Thread.getStackTrace()。 – jjnguy 2008-09-10 18:14:12
我相信這個方法會在一些IDE中引起警告,比如IntelliJ,因爲你創建了一個異常但不會拋出它。 我推薦使用Thread.getStackTrace()方法,它具有相同的邏輯,但它對開發人員來說是隱藏的。 – 2008-09-10 18:15:43
如果您只是想將它發送到stderr,Thread.dumpStack()會更容易(保存必須自己遍歷堆棧跟蹤元素)。 – 2008-09-10 18:29:16