我們需要調試一個Java應用程序,它隨機做它不應該做的事情。如何在調用特定Java方法時轉儲堆棧跟蹤?
要了解問題的根源,我們需要得到一個每當一個特定的方法被調用堆棧跟蹤。這聽起來很簡單(在此特定方法中添加Thread.dumpStack()
),但是這是來自JDK的代碼類,因此我們並不真正想要混淆它(即使我們確實可以)。
有誰知道,如果我們可以實現JVM中的某種「聽衆」的,將在一個特定的方法被調用檢測並轉儲堆棧跟蹤?
這是一個生產系統,因此,如果解決方案是我們需要有一些對性能的影響非常有限調試器。
謝謝您的輸入。
最簡單的解決方案是修改提到的jdk類..我認爲它不會造成問題.. – 2011-03-11 13:21:50
使用AOP可以將附加的運行時代碼附加到特定的方法。 – anubhava 2011-03-11 13:30:20