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

all*_*anc 5 debugging breakpoints intellij-idea karaf

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

目标VM不会因断点请求而暂停。在这种模式下无法评估方法。

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

vik*_*eve 3

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

例如:

c:\> startfabric.bat debug
Run Code Online (Sandbox Code Playgroud)

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

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

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