java - 如何在调用特定 Java 方法时转储堆栈跟踪?

标签 java debugging stack-trace

我们需要调试一个随机执行不该执行的操作的 Java 应用程序。

要了解问题的根本原因,我们需要在调用特定方法时获取堆栈跟踪。这听起来很简单(在这个特定的方法中添加 Thread.dumpStack()),但是这是来自 JDK 的代码类,因此我们真的不想弄乱它(即使我们确实可以) .

有谁知道我们是否可以在 JVM 中实现某种“监听器”来检测何时调用特定方法并转储堆栈跟踪?

这是一个生产系统,所以如果解决方案是一个调试器,我们需要一些对性能影响非常有限的东西。

感谢您的意见。

最佳答案

使用 Byteman。它可以很容易地将跟踪代码注入(inject)到正在运行的服务器中。我们的支持团队喜欢它。 http://www.jboss.org/byteman

关于java - 如何在调用特定 Java 方法时转储堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273366/

相关文章:

java - 如何仅在截断的单元格上动态设置工具提示

java - 在自己的线程中运行 JPanel。

python - 这些函数名称中的点是什么原因造成的

c - 帮助理解堆栈跟踪 : "#0 0x00000000 in ?? ()"

android - Android Stack Trace解读

Java字符串加密

Java:如何在不使用除法或模运算符的情况下查找整数是否为 2 的倍数

swift - 如何在XCode调试器中查看Swift float2、float3、float4等的值?

linux - 段错误 - 如何调试?

ruby-on-rails - 如何使 Rails.logger.debug 打印哈希更具可读性