【问题标题】:what code gets executed什么代码被执行
【发布时间】:2011-11-20 23:05:50
【问题描述】:

我有一些 J2EE 应用程序,我可以看到该应用程序在其 Web 界面中执行的操作。我也有应用程序的源代码。当我单击 Web 界面中的某些内容时,我想知道实际执行了什么代码。

找出这个问题的最佳方法是什么?我正在考虑将断点放在每个方法的第一行,但是手动执行很烦人:-),所以我希望这是一些更好的方法。

感谢您的回答。

【问题讨论】:

  • 日志记录怎么样?您甚至可以在不更改业务代码的情况下使用拦截器来实际执行此操作。
  • 记录是最好的方式,我也更喜欢!此外,Netbeans 提供了默认的原生调试器,有助于逐行调试。 CTRL+F5 以F7 开头。

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


【解决方案1】:

将日志消息添加到您的 API 是找出控制流的最佳和推荐方法(也是历史上最强大的调试机制之一)。

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

【讨论】:

    【解决方案2】:

    我认为 apache logger 是跟踪流程的好方法。因为它完全是自己编写的。 eclipse 提供了一个日志查看器插件,您可以通过它查看它.. 但是对于 Web 应用程序,我认为监控也很重要.. 使用 jconsole 可以查看正在执行的线程.. 使用 jmap 可以找到输出类和加载的对象...我不知道输出是否按加载顺序排列..如果是这样..那么您可以很好地了解如何加载类..以及消耗的实例由他们每一个人。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如何添加一个Servlet Filter,它只会将所有内容传递到链中并将断点放在那里?

        确保您的 web.xml 中有正确的过滤器映射,并且您的断点应该位于所有匹配 URL 的路径上。

        【讨论】:

          【解决方案5】:

          您的应用程序部署在应用程序服务器上。您可以通过在调试模式下启动服务器来对其进行调试。例如,JBoss 为 Eclipse 提供了一个不错的 tool suite。使用这些工具,只需按一下按钮即可进行调试(有错误的那个)。

          日志记录绝对是一种选择,尽管您不会获得那么多细节。我个人更喜欢logback 而不是公共的reasons。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-16
            • 1970-01-01
            • 2016-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-02
            • 1970-01-01
            相关资源
            最近更新 更多