我们需要调试一个随机执行不该执行的操作的 Java 应用程序。
要了解问题的根本原因,我们需要在调用特定方法时获取堆栈跟踪。这听起来很简单(在这个特定的方法中添加 Thread.dumpStack()
),但是这是来自 JDK 的代码类,因此我们真的不想弄乱它(即使我们确实可以) .
有谁知道我们是否可以在 JVM 中实现某种“监听器”来检测何时调用特定方法并转储堆栈跟踪?
这是一个生产系统,所以如果解决方案是一个调试器,我们需要一些对性能影响非常有限的东西。
感谢您的意见。
最佳答案
使用 Byteman。它可以很容易地将跟踪代码注入(inject)到正在运行的服务器中。我们的支持团队喜欢它。 http://www.jboss.org/byteman
关于java - 如何在调用特定 Java 方法时转储堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273366/