【问题标题】:Debugger doesn't stop at source code in Intellij IDEA调试器不会停留在 Intellij IDEA 中的源代码处
【发布时间】:2023-03-09 17:27:01
【问题描述】:

我有一个很奇怪的问题,我无法用 Intellij IDEA 解决。我正在使用 org.apache.james.mime4j 包解析电子邮件文件,但我的邮件文件的 Date: 标头格式不兼容。所以我从 mime4j 源创建了模块,并从我的磁盘中删除了 mime4j jar。

我找到了进行解析的地方。当我将System.out.println("Something") 放在那里时,我会在控制台中看到它。但是当我在 println 的行上放置一个断点时,它并没有停止。 (但它在我的 main() 函数中停止)。

您知道为什么会发生这种情况吗?我已经使我的缓存无效。我使用 IDEA 11.1.2。

【问题讨论】:

  • 您确定没有对 jar 进行后处理吗?这可以做各种各样的事情,这些事情会改变或以某种方式改变部署的类文件中的行号表与源代码中的行号。如果这两者不完全匹配,您会发现调试行为不稳定。
  • 你在输入打印语句后重新编译了吗?

标签: java debugging intellij-idea


【解决方案1】:

IDEA可能会缓存你的jar并使用缓存副本,仔细检查module dependencies,应该没有jar依赖,只有对包含源的模块的依赖。

也可以试试File | Invalidate Caches.

【讨论】:

  • 无效的缓存可能不会删除存储在%system%\jars下的缓存jar,见devnet.jetbrains.net/docs/DOC-181。您确定模块依赖项没有列出此 jar 吗?您是否尝试删除所有输出并重建?你能分享一个示例项目来重现它吗?
  • 谢谢!是否可以让 IDEA 不缓存依赖项(或特定的依赖项)?我花了好几个小时试图调试一个源代码行显然与正在执行的代码不匹配的项目......
【解决方案2】:

解决我的问题(相同的描述)的事情是同步源。请看下面的截图:

【讨论】:

    【解决方案3】:

    我也确实使缓存无效/重新启动,但没有积极的结果。

    在我的情况下,应用程序进程停止但 IDEA 没有捕获断点。解决方案是在进程被冻结时单击暂停调试器:

    【讨论】:

      【解决方案4】:

      在我的例子中,我正在调试一个单元测试,并且模拟了带有断点的类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        • 2021-07-01
        • 1970-01-01
        相关资源
        最近更新 更多