【问题标题】:debug java application while startup启动时调试 java 应用程序
【发布时间】:2012-09-24 11:26:37
【问题描述】:

这听起来可能有点太天真了,但我总是很难在服务器启动期间调试一个 java 类。这是场景:

  • Java 应用程序托管在 tomcat 服务器上。
  • 假设有一个类在 tomcat 服务器启动时被调用。
  • 一旦我停止 tomcat 实例以重新启动,eclipse 调试就会停止,只有在应用程序启动并运行后我才能开始调试。
  • 现在如何在 Eclipse 上调试这个类?

提前感谢您的帮助。

【问题讨论】:

  • 在你想在你的类中调试的地方设置一个断点,并确保在调试模式下启动服务器。
  • 我也这样做。但是为了在eclipse上开始调试,服务器应该已经启动并运行了,对吧?在那之前,当我单击调试符号时,它会引发错误。当它开始工作时,这个类已经被调用了,我想念它。

标签: java eclipse debugging


【解决方案1】:

您需要将“等待调试器连接”标志传递给 tomcat。所以启动会等到你连接上,这样你就不会错过断点。

以那些让tomcat监听调试器的java选项为例:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y

等待调试器连接标志是上述行中的suspend=y 条目。

【讨论】:

    【解决方案2】:

    在启动期间调试类应该没有问题。例如,假设您实现了ServletContextListener class。所属的 contextInitialized 方法在 Tomcat 启动期间调用(或者更准确地说:在您的应用程序部署时)。

    你可以在这个类中设置断点。此时Tomcat已经完全启动,调试应该没有问题。

    【讨论】:

    • 嘿 Sebi,我当然可以设置断点。但是为了让断点工作,我的 Eclipse 上的调试应该运行......我的问题是,在服务器完全启动并运行之前,调试不会在我的 Eclipse 上运行。
    • 使用远程调试尝试未由 eclipse 启动的外部服务器。您可以在部署应用程序之前启动该服务器。之后,当您已经连接到服务器时,您可以通过 eclipse 部署您的应用程序。如果您的断点仍然被忽略,请先尝试一个简单的测试应用。
    • 我通常不通过eclipse启动我的服务器。我启动 tomcat 服务器(当然是自定义启动脚本),然后使用 localhost 和调试端口号挂钩 eclipse 调试选项。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2018-05-25
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多