我想知道是否存在某些东西(在Java世界中)能够使用以下功能拍摄JVM当前状态的快照:
在抛出异常时执行此操作.
捕获局部变量,方法的参数等.
将它放在一个方便的文件中,该文件可用于在IDE中提取或重现源代码中的情况.
需要两个第一个功能(第三个功能很棒).并且它必须适合生产使用(因此,调试器没有办法).
在问这个之前我已经搜索了WWW(尽可能长),我发现了一些指示:
Cajoon拦截器:如Dzone帖子中所述,它是一个被动JVM代理,满足三个要求!但是,它有两个缺点:你必须支付它并且网站停机(也许没有机会支付任何费用).
AviCode Intercept Studio:Cajoon的.NET等价物.只是为了提供一些见解.
JavaFrame:好的,这是一条推文,但是它指向一个可用的SVN 仓库,它有一个JVM代理的源代码(在MIT许可下)看起来很好(我将试一试).
那么,也许我正在寻找一种不存在的解决方案?这并不紧急,但我有一个项目的想法,探索这个"未知"(?)路径并获得真实的东西会很棒.
似乎很明显它将是一个JVM代理(例如来自JVMTI的异常事件).
最后,我将重点介绍维基百科的异常处理文章中的以下段落:
在运行时引擎环境(如Java或.NET)中,存在附加到运行时引擎的工具,每次发生感兴趣的异常时,它们都会记录抛出异常时存在于内存中的调试信息(调用堆栈和堆栈)值).这些工具称为自动异常处理或错误拦截工具,并为异常提供"根本原因"信息.
这就是主意.我希望有人可以给我一些见解,或者在未来,有人会受到这篇不起眼的帖子的启发:)
谢谢!