java - 使用 IntelliJ 远程调试 Tomcat 7

标签 java tomcat intellij-idea remote-debugging

我有一个在 10.0.1.62:8080/xxx 上运行的网络应用程序。我想通过 IntelliJ IDEA 远程调试。我设置了 JAVA_OPTS = -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

在 10.0.1.62 机器(Ubuntu 上的 Tomcat7)上,当我点击远程调试按钮时,IDE 给出了一条信息消息:

Connected to the target VM, address: '10.0.1.62:8000', transport: 'socket'

比我打10.0.1.62:8080/xxx。 尽管我收到此成功消息,但未命中断点。我错过了什么?

最佳答案

首先,请引用以下问题和答案仔细检查您的设置:Remote Debugging in IntelliJ Tomcat

从您的问题来看,您似乎已经执行了这些步骤。过去还有一些其他配置问题导致我在远程 tomcat 调试方面出现问题,我将分享这些问题并希望它有所帮助。

  1. 确保您在 IntelliJ 上启动了正确的远程调试过程。 Remote Debug
  2. 如果您的主机上运行着多个 Tomcat 服务器,请确保您连接到正确的 Tomcat 实例。调试端口 8000 可能已被使用。我使用任意端口 15019 或其他一些尚未使用的端口号。确保使用的端口在 Tomcat 和 IntelliJ 之间匹配。
  3. 根据您在 Tomcat 上设置远程调试的方式,它可能无法正常关闭而让旧实例继续运行。在 catalina.sh 的顶部添加调试 Hook 将导致 shutdown.sh 脚本失败,因为您的调试端口已经绑定(bind)到 Tomcat 服务器。而是将它放在 start if 语句中:

    elif [ "$1"= "start"] ;然后 JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=15019,suspend=n,server=y"

修复此问题后,您可以使用 ./shutdown.sh 成功关闭 Tomcat,并仍然使用 ./startup.sh 开始调试

  1. 确保您在 Tomcat 上干净部署了您的应用程序。您的清理过程可能需要变化,但总体思路如下:

    关闭 Tomcat,然后确认它不再运行。 从您的 tomcat webapps 目录中删除已部署的 war 文件和相应的分解版本。 删除工作目录和临时目录的内容。 部署并验证您最近构建的 war 文件。 启动 Tomcat。

创建一个脚本来执行此操作将节省时间。

  1. 如果一切都失败了,添加一个调试日志来仔细检查代码,断点首先被调用。

我敢肯定还有 20 件其他事情可能会出错。随意添加想法。

关于java - 使用 IntelliJ 远程调试 Tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703392/

相关文章:

java - Tomcat 不会在 Windows 中自动启动

javascript - 如何让 IntelliJ IDEA 显示目录?

java - Intellij 替换所有出现的 stringbuilder.toString()

Java:根据 HashMap 中的排序键显示值

java - 我可以在循环语句中返回 boolean 值吗?

java - Java 中的正则表达式匹配

java - 在 Java 中将字符串解析为比较器类型

java - 需要帮助在 tomcat 中调试 SSL 握手

java - eclipse :Tomcat: Failed to read candidate component class:

scala - Spark SBT 程序尝试从本地文件系统而不是 IntelliJ 项目中的 hdfs 读取