为什么 IntelliJ 在远程调试时跳过断点

Why is IntelliJ skipping breakpoints while remotely debugging

我被要求在我的开发机器上托管的 VM 中调试安装在 Apache Karaf (OSGi) 运行 中的 Java 应用程序。我的同事已经能够使用 Eclipse 成功地进行远程调试。我选择的工具是 IntelliJ,在我尝试远程调试时,IntelliJ 成功连接(通过套接字)。如果我暂停调试会话,Karaf 控制台会按预期冻结并在我单击继续时恢复。但是当我暂停时,我可以在 IntelliJ 中看到以下消息并且我的断点被忽略了。

目标虚拟机没有被断点请求暂停。在此模式下无法评估方法。

这是什么意思?我已经搜索并浏览了 IntelliJ 的文档。为什么 Eclipse 允许工作断点而 IntelliJ 不允许?

首先,假设您已经在调试模式下启动了 OSGI 容器(例如,Fuse Fabric)。通常这是通过将参数 debug 添加到启动脚本来完成的。

例如:

c:\> startfabric.bat debug

正如 Tim 所说,您现在需要确保您的源代码与部署到 OSGI 容器的任何内容完全同步。

为了确定,检查与部署到服务器的完全相同的源代码版本,然后选择 Build -> Rebuild Project。如有必要,请在您的计算机上执行 mvn clean install,并部署您自己构建的包/功能 - 然后您就会知道您在本地拥有的代码应该与部署的完全匹配。

最后,检查您在 IntelliJ 中的调试面板,并删除任何可能在调试模式下干扰的 Watch 表达式。