使用IntelliJ IDEA进行Spring Boot调试时无法打开调试器端口

6

我想使用IntelliJ调试一个Spring Boot应用程序,我正在使用Windows 10。当我使用以下命令运行我的Spring Boot项目时,它可以正常工作。但是调试没有起作用。

mvn spring-boot:run -Drun.profiles=dev -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

然后我使用IntelliJ创建了一个远程调试器,如下所示。

enter image description here

但是当我点击调试按钮时,IntelliJ显示以下消息。

运行“RemoteDeBugger”时出错:无法打开调试器端口(localhost:5005):java.net.ConnectException“连接被拒绝:connect”

以上行为的原因是什么,如何正确进行调试。

尝试使用其他端口号,使用TcpView查看应用程序是否在指定的端口上侦听调试器连接。 - CrazyCoder
我觉得不行。似乎即使我以调试模式启动应用程序,它也没有以调试模式启动。我尝试了不同的端口号。 - Nwn
2
你有检查过 https://dev59.com/gloV5IYBdhLWcg3wc-no#50677882 吗? - CrazyCoder
2个回答

12

以上行为的原因是什么?

您之所以出现此错误,是因为您的远程调试器正在查找侦听端口5005的JVM。

如何正确进行调试?

首先必须运行带有5005端口的JVM。好的,要做到这一点,您已经知道答案:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
或者
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

根据文档,使用agentlib:jwdp选项加载并指定JDWP代理的选项更好。自5.0版本以来,-agentlib:jdwp选项用于加载和指定JDWP代理的选项。对于早于5.0版本的发布版,使用-Xdebug和-Xrunjdwp选项(5.0实现也支持-Xdebug和-Xrunjdwp选项,但较新的-agentlib:jdwp选项更可取,因为5.0中的JDWP代理使用JVMTI接口而不是旧的JVMDI接口)。

一切启动成功后,您可以通过单击调试来启动配置的远程调试器。

请确保使用与运行应用程序所使用的端口相同的端口。

此时,您可以从断点开始分析您的代码。


2
不知道为什么这个回答完美地回答了问题,却被投下了反对票。没有给出合适理由就进行反对投票是违背社区良心的行为。 - xpioneer
终于有东西可以用了。我尝试了-Drun.profiles=dev版本,它可以工作。谢谢! - Sanjeev Dwivedi

0
在最新版本的IntelliJ IDEA中,只需在配置中选择“远程”选项并填写您的主机。然后将JVM命令行参数复制到远程JVM中,就像Philippe Simo的答案中所描述的那样。 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接