【问题标题】:Source level debugging of generated code in IntelliJIntelliJ 中生成代码的源代码级调试
【发布时间】:2014-03-14 21:16:58
【问题描述】:

我想在 IntelliJ 中调试 Dagger 生成的代码。 Dagger生成的源文件放入/target/generated-test-sources/test-annotations/target/generated-sources/annotations

我查看了“运行/调试配置”对话框,但没有看到任何明显的内容。我还检查了模块设置,这些都被列为源文件夹,所以 IntelliJ 肯定知道它们是源,但由于某种原因,我在生成的代码中不会遇到任何断点。

【问题讨论】:

    标签: java debugging intellij-idea dagger


    【解决方案1】:

    对于 IntelliJ 13.1.5:

    如果/target/generated-sources/annotations 被标记为生成的源根,IntelliJ 永远不会触发断点。如果/target/generated-sources/annotations 未标记为生成的源根,IntelliJ 将触发断点,但不会跳转到关联的源。

    1. 取消将 /target/generated-sources/annotations 标记为生成的源根目录
    2. 在生成的源代码中设置断点
    3. 运行代码以触发断点
    4. /target/generated-sources/annotations标记为生成的源根目录

    IntelliJ 现在按预期运行。完成后,您可能需要删除 /target/generated-sources/annotations 才能再次触发断点。

    我创建了an IntelliJ bug for this issue。请点赞。

    【讨论】:

      【解决方案2】:

      您所需要的只是 IDEA 可用的源文件,然后您应该能够进行调试。确保包含文件的文件夹包含在项目结构设置中,然后您应该能够使用 ctrl+n 打开文件并设置断点。

      【讨论】:

      • 它们已经在模块设置中列为源文件夹。
      • 你能打开它们吗?也许您需要将它们所在的文件夹标记为源根目录。这可以通过右键单击文件夹并选择“标记为”来完成。断点是用“v”还是“x”表示的?
      【解决方案3】:

      我的工作解决方法是:

      • 展开生成的工件(jar、war、ear、...)
      • 打开(并反编译)类文件
      • 把断点放在这里

      此时 IntelliJ 按预期触发断点。

      【讨论】:

        猜你喜欢
        • 2011-08-23
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2014-11-12
        相关资源
        最近更新 更多