2011-03-13 55 views
5

我使用Eclipse 3.5,并将src.zip附加到Eclipse中的全局设置中。 窗口 - >首选项 - >爪哇 - >已安装的JRE - >的rt.jar - 源附件 - ...../JDK/src.zip如何在ECLIPSE中调试.class文件?

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

当我调试我的源代码断点(我的项目)的工作很好,但是当我需要步入Java核心的lib .classes我碰到下面的错误在我的Eclipse eclipse error

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

我在首选项中检查了编译器设置,发现所有选项都被选中为true。 enter image description here 如果有人能帮我解决这个问题,那将会很棒。

在此先感谢。

回答

6

你可能有编译器设置,包括你的类文件的调试信息,但在rt.jar中的类文件未编译的方式。您需要重新编译rt.jar中所有类的源代码(不适合心脏f弱)或download a debug build of the jdk

+0

工作就像一个魅力。非常感谢你。一直在寻找这个。 – AKh

+0

嗨,大卫...你能告诉如何在Java核心类中进行更改,并编译它们并在我的项目中使用它们吗?例如:我想修改私有变量 - 头部 - 为了我的研究目的在公共中为LinkedList类赋值?我研究LinkedList的行为...即使你指向某些资源,也会欣赏。 – AKh

+0

我不认为这是一个好主意,如果你只是想访问私有变量进行研究,你可以通过反思来完成。例如,减去异常处理:列表名单=新的LinkedList (); list.add( “富”); Field header = list.getClass()。getDeclaredField(“header”); header.setAccessible(真);的System.out.println(header.get(列表)); –

2

blog posts给分的完整列表,检查

按照以下步骤,如果你使用的是Eclipse IDE

enter image description here

  1. 进入windows > preferences > Java > compiler屏幕编译。
  2. 确保选中了为生成的文件(调试器使用)添加行号属性复选框。
  3. 重新构建并尝试添加一个断点,希望它能为你工作。

注蚂蚁构建

按照以下步骤,如果你正在使用ANT工具编译:

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

因为JRE类不适合调试,所以不应该使用带有JDR src的JRE。

让Eclipse中搜索Java环境,然后从结果列表中选择JDK。此Java环境将正确连接src.zip,您应该可以进行调查。即使JDK类没有完整的调试信息可用,所以你不能看到局部变量等

(此外,编译器设置面板仅适用于码,JRE类预生成和

注专家组不会影响他们)。