讓我們假設我們有一個抽象類,它帶有一個打印WARN日誌條目的方法(警告:無法設置頭文件。已經提交的響應文件),這個方法被類X調用很多次(這是氾濫日誌)。如何識別哪個類正在調用特定的方法?
基於從Application Server生成的日誌條目,我已經設法識別抽象類並找到它的jar(使用jarscan),JAR是應用程序服務器的OOTB組件,所以它不應該在任何意義上進行修改。我已經砍死JAR和介紹,生成日誌條目的方法中的一行:
new Exception().printStackTrace()
這種做法應該給我堆棧跟蹤,以確定類X.
不過,我不知道如何在我的測試環境中重現這個錯誤,在我的工作區中有很多項目,我不能只檢查數百個類來查看哪一個設置了響應對象,我嘗試過找到日誌條目時間戳和針對測試環境運行的Selenium測試報告之間的匹配,但它不會顯示在日誌中。
問題:什麼是一種很好的故障排除方法來識別X類,而不會對環境造成任何侵入性的變化,從而引發問題?
請參閱Thread.currentThread(),Thread.dumpStack()和Thread.getStackTrace() – ControlAltDel 2014-09-25 12:24:00
可能重複的[什麼是調試器,它如何幫助我診斷問題](http://stackoverflow.com/questions/ 25385173/What-is-a-debugger-and-how-can-it-help-me-diagnose-problems) – Raedwald 2014-09-25 12:33:23
使用調試器。 1.在該方法上放置一個斷點。 2.運行該程序。 3.當程序在斷點處暫停時查看堆棧跟蹤。 – Raedwald 2014-09-25 12:34:15