【问题标题】:How to debug .class files in ECLIPSE?如何在 ECLIPSE 中调试 .class 文件?
【发布时间】:2011-03-13 08:51:47
【问题描述】:

我正在使用 Eclipse 3.5,并将 src.zip 附加到 Eclipse 中的全局设置中。 Windows--> Preferences -->Java -->Installed JREs -->rt.jar - 源附件 - ...../jdk/src.zip

我成功地能够进入 java 核心库 .class 文件并查看源代码。我构建了一个使用 LinkedList 的类,并且在 LinkedList 类中设置了一个断点。

当我在我的源代码(我的项目)中调试断点时工作良好,但是当我需要进入 java 核心库 .classes 时,我在 Eclipse 中收到以下错误

由于缺少行号属性,无法在 java.util.LinkedList 中安装断点。修改编译器选项以生成行号属性。

我在首选项中检查了我的编译器设置,发现所有选项都被选中。 如果有人能帮我解决这个问题,那就太好了。

提前致谢。

【问题讨论】:

    标签: java eclipse compiler-construction debugging


    【解决方案1】:

    您可能已将编译器设置为在您的类文件中包含调试信息,但 rt.jar 中的类文件不是这样编译的。您需要重新编译 rt.jar 中类的所有源代码(不适合胆小的人)或 download a debug build of the jdk

    【讨论】:

    • 工作就像一个魅力。非常感谢你。一直在找这个。
    • 嗨,David... 你能告诉我如何在 Java 核心 .classes 中进行更改并编译它们并供我的项目使用吗?例如:我想将私有变量——标头——修改为公共变量,以便为我的研究目的在 LinkedList 类中分配值?我正在研究 LinkedList 的行为......即使你指点我一些资源,我也会感激不尽。
    • 我认为这不是一个好主意,如果您只想访问私有变量进行研究,您可以通过反射来实现。例如,减去异常处理: List list = new LinkedList(); list.add("foo");字段头 = list.getClass().getDeclaredField("header"); header.setAccessible(true); System.out.println(header.get(list));
    • 谢谢大卫。让我试试看。
    • @DavidConrad........“你需要重新编译 rt.jar 中类的所有源代码(不适合胆小的人)”..你能指导一下吗这...指针请..
    【解决方案2】:

    blog posts 给出了一个完整的检查点列表

    如果您使用 Eclipse IDE 进行编译,请按照以下步骤操作

    1. 转到windows > preferences > Java > compiler 屏幕。
    2. 确保已选中将行号属性添加到生成的文件(由调试器使用)复选框。
    3. 重新构建并尝试添加断点,希望它对您有用。

    ant 构建注意事项

    如果您使用 ANT 实用程序进行编译,请按照以下步骤操作:

    1. 检查 build.xml 文件并确保在 javac 任务中将 debug 属性设置为 true
    2. 另外,如果您使用 JBoss 作为应用服务器,请确保您已经打开了远程套接字绑定的端口 机连接。如果不是,那么只需确保 C:/jboss/bin/run.bat 有一个条目:
      "set JAVA_OPTS=%JAVA_OPTS% -Xdebug –Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n" 用于打开端口 5000 以侦听调试/远程 Java 应用程序的所有套接字连接。
    3. 重新构建并尝试添加断点,希望它对您有用。

    【讨论】:

      【解决方案3】:

      您不应使用附加了 JDR src 的 JRE,因为 JRE 类不太适合调试。

      让 Eclipse 搜索 Java 环境,然后从结果列表中选择 JDK。此 Java 环境将正确附加 src.zip,您应该能够进行调查。

      请注意,即使是 JDK 类也没有完整的调试信息,因此您看不到局部变量等。

      (此外,编译器设置面板仅适用于您的代码。JRE 类是预先生成的,面板不会影响它们)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-07
        • 2013-12-08
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多