什么代码被执行

时间:2011-09-20 10:13:10

标签: java debugging java-ee netbeans reverse-engineering

我有一些J2EE应用程序,我能够在它的Web界面中看到该应用程序正在做什么。我也有应用程序的源代码。当我点击Web界面中的某些内容时,我想知道实际执行了什么代码。

找到这个的最佳方法是什么?我想把断点放在每个方法的第一行,但是手动执行它非常烦人:-),所以我希望这是一个更好的方法。

谢谢你回答。

5 个答案:

答案 0 :(得分:2)

向API中添加日志消息是确定控制流的最佳和推荐的方法(并且也是历史上最强大的调试机制之一)。

如果您愿意,您可以将其中的大多数设置为DEBUG级别,以便将它们从开发环境切换到类似生产的环境(您很可能不需要它)。

答案 1 :(得分:2)

我认为apache记录器是跟踪流程的一种很好的方式.. cos全部自编。 eclipse提供了一个日志查看器插件,你可以通过它查看它..但是当谈到Web应用程序时,我认为监控也很关键..使用jconsole你可以查看正在执行的线程..并使用jmap你可以找到out类和加载的对象...我不知道输出是否按照它们被加载的顺序..如果是这样..那么你可以很好地了解类的加载方式..以及消耗的实例由他们每个人。

答案 2 :(得分:2)

添加记录器。您也可以使用记录器库,例如Apache Commons Logging

答案 3 :(得分:2)

如何添加Servlet Filter只是将所有内容传递给链并将断点放在那里?

请务必在web.xml中使用正确的过滤器映射,并且断点应该与所有匹配的URL一致。

答案 4 :(得分:2)

您的应用程序部署在应用程序服务器上。您可以通过在调试模式下启动服务器来调试它。例如JBoss对于eclipse有一个很好的tool suite。使用这些工具,调试只需按一下按钮(带有错误的按钮)。

记录绝对是一个选项,尽管你不会得到那么多细节。我个人更喜欢logback而不是公共reasons

如果您没有线索,在哪里设置断点/在哪里记录,并且包结构没有帮助,您可以从EJB中的方法开始。例如,查找注释@Stateless@EJB(以查找注入点并从那里开始)。
如果有servlet类,从那里开始,或者如果它是JSF前端,请查找@ManagedBean注释。