【发布时间】:2010-09-27 05:16:52
【问题描述】:
我想知道是否存在(在 Java 世界中)能够通过以下功能拍摄 JVM 当前状态的快照:
- 在抛出异常时执行此操作。
- 捕获局部变量、方法的参数等
- 将它放在一个方便的文件中,该文件可用于在 IDE 中提取或重现源代码中的情况。
前两个功能是必需的(第三个会很棒)。而且它必须适合生产使用(因此,调试器没有办法)。
在问这个之前,我已经搜索了万维网(尽可能长),我发现了一些指针:
- Cajoon Interceptor:正如Dzone post 中所说,它是一个满足三个要求的被动JVM 代理!但是,它有两个缺点:您必须为此付费,并且网站已关闭(可能没有机会支付任何费用)。
- AviCode Intercept Studio:Cajoon 的 .NET 等价物。只是为了提供一些见解。
- JavaFrame:好的,这是一条推文,但它指向一个可用的 SVN 存储库,其中包含看起来不错的 JVM 代理的源代码(在 MIT 许可下)(我将尝试一下)。李>
那么,也许我正在寻找一个不存在的解决方案?这并不紧急,但我有一个项目的想法,探索这条“未知”(?)路径并获得真实的东西会很棒。
似乎很清楚它将是一个 JVM 代理(来自 JVMTI 的异常事件,用于example)。
最后,我将突出显示Wikipedia's Exception Handling article 中的以下段落:
在运行时引擎环境中,例如 Java 或 .NET,有一些工具可以 附加到运行时引擎和每个 感兴趣的例外的时间 发生,他们记录调试 内存中存在的信息 抛出异常的时间 (调用堆栈和堆值)。这些 工具称为自动异常 处理或错误拦截工具 并提供“根本原因”信息 例外情况。
就是这样。我希望有人能给我一些见解,或者将来有人会从这篇不起眼的帖子中得到启发:)
谢谢!
【问题讨论】:
-
我很想知道您是否找到了其他解决方案。
标签: java exception exception-handling jvm agent