我被要求调试在我的开发机器上托管的VM中运行的Apache Karaf(OSGi)中安装的Java应用程序。我的同事已经能够使用Eclipse成功进行远程调试。我选择的工具是IntelliJ,在我尝试远程调试时,IntelliJ连接成功(通过套接字)。如果我暂停调试会话,Karaf控制台将按预期冻结,并在我单击继续时恢复。但是当我暂停时,我可以在IntelliJ中看到以下消息,我的断点将被忽略。
断点请求不会暂停目标VM。在这种模式下无法评估方法。
这是什么意思?我搜索过并浏览了IntelliJ的文档。为什么Eclipse允许工作断点而IntelliJ不能?
答案 0 :(得分:2)
首先,假设您已在调试模式下启动了OSGI容器(例如,Fuse Fabric
)。通常,这是通过将参数debug
添加到起始脚本来完成的。
例如:
c:\> startfabric.bat debug
Tim指出,您现在需要确保您的源代码与部署到OSGI容器的内容完全同步。
要确定,请查看与部署到服务器的源代码完全相同的源代码版本,然后选择Build
- > Rebuild Project
。如有必要,在您的计算机上执行mvn clean install
,并部署您自己构建的软件包/功能 - 然后您就知道您在本地拥有的代码应该与部署的代码完全匹配。
最后,检查IntelliJ中的调试面板,并删除在调试模式下可能会干扰的所有Watch表达式。