为 IntelliJ 中的远程调试配置默认命令行参数

configure default command line arguments for remote debugging in IntelliJ

在 IntelliJ 中调试类型为“Spring Boot”的 运行 配置时,JVM 使用以下命令行参数启动:-agentlib:jdwp=transport=dt_socket,address=*:12345,suspend=y,server=y

如何更改这些值?

更多详情

我是 运行 IntelliJ 和 WSL2 中基于 Maven 的 Spring 启动应用程序。当我尝试调试类型为“Spring Boot”的 运行 配置时,jvm 永远不会越过这一行:Listening for transport dt_socket at address: 12345 我认为这与 WSL2 在某种虚拟机中是 运行,而 IntelliJ 在 Windows.

中是 运行 有关

我目前的解决方法是将 -agentlib 命令行参数的修改版本添加到我的 JVM 选项,并在 运行 运行 配置之后手动附加调试器。我所做的唯一修改是将 address=*:12345 更改为 address=12345 我的理解是我的修改导致代理监听 localhost:12345 并且调试器连接到 localhost:12345。一切正常,因为 Windows 和 WSL2 以某种方式共享 localhost.

我是如何找到解决方法的?

幸运的是,您可以在 运行 应用程序中看到 IntelliJ 使用的命令行参数。我的一些项目的命令行参数不同。有时是 address=*:12345,有时是 address=12345

更新 2021-09-18 18:45

看来我的问题与 ipv6 和 ipv4 有关。我的解决方法导致 jvm 在 127.0.0.1:12345 上侦听,在没有解决方法的情况下它使用 ipv6.

更新 2021-09-19 14:00

现在我接受了 Andrey 在他的评论中建议的新解决方法。添加 -Djava.net.preferIPv4Stack=true 到命令行参数使 JVM 使用 IPv4。在阅读安德烈的评论时,请注意 preferIPv4StackpreferIPv6Stack ;)

-Djava.net.preferIPv4Stack=true-Djava.net.preferIPv6Addresses=false 添加到帮助 |编辑自定义 VM 选项文件并重新启动 IDE.