【问题标题】:Intellij Idea Remote ignores breakpoints inside Spring components codeIntellij Idea Remote 忽略 Spring 组件代码中的断点
【发布时间】:2019-03-22 23:48:26
【问题描述】:

我正在尝试使用 Intellij Idea 的远程调试器调试 spring-boot 应用程序。

我使用 Intellij Idea “Spring Boot”运行配置在我的开发机器上本地运行我的应用程序,并在运行配置中配置了以下 VM 选项:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

我没有其他 Java 应用在运行。

然后我运行另一个 Intellij Idea 运行配置“远程调试器”。它具有以下配置:

host: localhost; port:5005, debugger mode: Attach to remote JVM

我可以在控制台中看到以下消息:

Connected to the target VM, address: 'localhost:5005', transport: 'socket'.

但是控制器类和其他组件中的断点被忽略了。

但是!!!如果我选择我的 Spring Boot 运行配置并简单地在调试模式下运行它(这样就不需要运行单独的远程调试器运行配置)断点按预期工作。

【问题讨论】:

  • @Frito,你的链接失效了
  • 试试this ...
  • @Frito,谢谢,但此链接似乎无法解决我的问题。实际上,我尝试在没有 docker 的情况下做同样的事情,在主机上本地运行我的应用程序并将远程调试器连接到 VM。我遇到了与 docker 完全相同的问题。原来 id 根本不需要对 docker 做任何事情。我已经相应地编辑了我的问题。
  • 请提供更多信息。什么是“本地主机”?在您的开发人员机器或主机上但没有 docker?你如何配置你的 spring-boot 应用程序的虚拟机?问题通常是:网络(例如 docker 或 real)、为调试配置了错误的 VM、运行时 VM 中的类与 IDE 相比不同或未使用调试信息编译的类。
  • @Frito,我已经用最简单的测试用例的描述替换了我原来的帖子,我没有 docker 但仍然有同样的问题。

标签: java docker spring-boot intellij-idea remote-debugging


【解决方案1】:

确保代码在您要调试的 VM 中执行。检查这个例如带有日志记录。

例子:

您必须访问 REST 端点。使用浏览器或 REST 客户端执行此操作将按预期在配置的断点处停止 VM。执行此操作运行 SpringBootTest 将在其自己的 VM 中执行代码,模拟 Web 服务器或在不同(可能是任意)端口上启动新的 Web 服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多