我们需要调试一个Java应用程序,它随机做它不应该做的事情。如何在调用特定Java方法时转储堆栈跟踪?
要了解问题的根源,我们需要得到一个每当一个特定的方法被调用堆栈跟踪。这听起来很简单(在此特定方法中添加Thread.dumpStack()
),但是这是来自JDK的代码类,因此我们并不真正想要混淆它(即使我们确实可以)。
有谁知道,如果我们可以实现JVM中的某种“听众”的,将在一个特定的方法被调用检测并转储堆栈跟踪?
这是一个生产系统,因此,如果解决方案是我们需要有一些对性能的影响非常有限调试器。
谢谢您的输入。
最简单的解决方案是修改提到的jdk类..我认为它不会造成问题.. – 2011-03-11 13:21:50
使用AOP可以将附加的运行时代码附加到特定的方法。 – anubhava 2011-03-11 13:30:20