我有一个在 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 调试方面出现问题,我将分享这些问题并希望它有所帮助。
- 确保您在 IntelliJ 上启动了正确的远程调试过程。
- 如果您的主机上运行着多个 Tomcat 服务器,请确保您连接到正确的 Tomcat 实例。调试端口 8000 可能已被使用。我使用任意端口 15019 或其他一些尚未使用的端口号。确保使用的端口在 Tomcat 和 IntelliJ 之间匹配。
根据您在 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 开始调试
确保您在 Tomcat 上干净部署了您的应用程序。您的清理过程可能需要变化,但总体思路如下:
关闭 Tomcat,然后确认它不再运行。 从您的 tomcat webapps 目录中删除已部署的 war 文件和相应的分解版本。 删除工作目录和临时目录的内容。 部署并验证您最近构建的 war 文件。 启动 Tomcat。
创建一个脚本来执行此操作将节省时间。
- 如果一切都失败了,添加一个调试日志来仔细检查代码,断点首先被调用。
我敢肯定还有 20 件其他事情可能会出错。随意添加想法。
关于java - 使用 IntelliJ 远程调试 Tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703392/