在运行时跟踪java应用程序

时间:2010-01-01 16:45:20

标签: java debugging

我想在运行时跟踪一个java应用程序来记录并稍后分析它的每个行为。

是否有可能挂钩到java应用程序以获取运行时信息,如方法调用(带参数和返回值)和对象的状态(即其属性及其值)?

我的目标是全面了解应用程序行为及其处理数据的方式。

4 个答案:

答案 0 :(得分:4)

如果您需要高度自定义的日志记录和运行时处理,则分析器的一种替代方法是使用aspectsload-time weaving

我们以这种方式使用AspectJ来捕获和记录为调试目的而调用许多低级方法并撤消错误更改的用户的身份验证信息。

答案 1 :(得分:1)

使用分析器。例如JProfiler或来自此overview开源java分析器的一个。每当我必须找到死锁时,这些工具都是无价的......

答案 2 :(得分:1)

在Netbeans中,分析器存在且工作正常,可以使用http://profiler.netbeans.org/

答案 3 :(得分:0)

也许可以查看Glassbox一个用于自动诊断常见问题的Java应用程序的故障排除代理。来自Glassbox - Automated monitoring and troubleshooting using AOP

  

Glassbox将war文件部署到您的   appserver然后使用AspectJ加载   编织时间来监控应用程序   组件和其他工件,在   为了找出像过剩这样的问题   或者远程调用失败,查询速度慢,   太多的数据库查询,线程   争论,甚至是什么要求   参数导致失败。这一切都没有   更改代码或构建过程。   (...)

     
    

Glassbox通过使用方面来跟踪组件交互,从而非侵入地监视应用程序。我们还监视内置的JMX数据,特别是在我们对线程数据进行采样的Java 5 VM上(默认情况下每100毫秒)。在处理请求时,我们总结了值得注意的事件,例如花费时间以及使事情变慢或失败所涉及的参数。我们还检测用于报告的更高级别的操作(例如Struts操作或Spring控制器)。然后,我们的AJAX Web客户端通过对被监控机器的操作提供状态摘要,并根据请求生成更详细的分析。 Glassbox允许监控服务器群集:Web应用程序使用JMX Remote或直接RMI来访问远程服务器的数据。我们还提供对较低级别摘要统计信息的JMX远程访问。

  

这是一个很好的应用程序,试一试。