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

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

目标VM不会被断点请求暂停.在此模式下无法评估方法.

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

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

例如:

c:\> startfabric.bat debug

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

确保查看与部署到服务器的源代码完全相同的源代码版本,然后选择Build – >重建项目.如有必要,在您的计算机上执行mvn clean安装,并部署您自己构建的软件包/功能 – 然后您知道本地代码应该与部署的代码完全匹配.

最后,检查IntelliJ中的调试面板,并删除在调试模式下可能会干扰的所有Watch表达式.

点赞