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

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

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

最佳答案

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

例如:

c:\> startfabric.bat debug

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

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

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

关于debugging - 为什么IntelliJ在远程调试时跳过断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30387419/

10-14 10:52
查看更多