如何使用Eclipse检查调试符号状态?

时间:2011-06-01 15:02:15

标签: java eclipse sdk debug-symbols

在我讨论another question时,@ Aaron Digulla指出了以下内容:

  

如果您安装了Java SDK,那么Java安装的根目录中应该有一个“src.zip”文件。如果它丢失了,请再次下载Java。当您打开JTable类型时(或者当您单击堆栈跟踪中的行时),Eclipse应自动找到源并显示给您。

文件src.zip对我而言,但我仍然无法访问JTable的来源,如@Aaron所说。可能是什么问题呢?我怎样才能用Eclipse解决这个问题?

  

“未知来源”让我担心,   虽然。它表示您的Java版本   没有调试符号。确保   你a)使用SDK时   开发,b)您的SDK包含   调试符号,c)不要告诉   命令java去除调试符号   当它加载类时。

a)我正在使用Eclipse,为什么我不应该使用SDK?

b)我如何知道我的SDK是否包含调试符号?如果没有,我该如何添加它们?

c)如何检查Eclipse是否告诉java去除调试符号?

很抱歉这些平庸的问题,但我觉得我并不完全了解Java开发过程。

2 个答案:

答案 0 :(得分:6)

a)Eclipse带有它自己的Java编译器,所以如果你使用的是Java Runtime Environment,你就不会遇到很多问题,除了像jarsigner和可能的JRE源代码这样的额外内容可能会丢失。验证安装的最佳方法是通过包管理器;但是,如果你通过其他方式安装,仔细的目录观察通常可以区分两者(见下文)。

b)通常在没有调试符号的情况下编译JRE库。 SDK库通常具有它们。通过使用打开调试端口的命令行选项启动JVM来完成Java调试。 SDK与JVM通信,请求通过此端口设置断点。稍后,如果您决定步进JVM,它还会通过此端口发送步骤/跳转/回滚调试命令。 “调试”符号实际上是JVM字节码表,它引用从特定字节码指令开始有效的源代码行。这允许调试器将正在运行的字节码与原始源代码中的行号相关联。

c)通过(从菜单中)Window-> Preferences(在选择器列上)验证它,展开“Java”,展开“Java”下的“Build Path”,然后选择“ClassPath变量”。您将看到一些变量,包括一个名为“JRE_SRC”的变量,它应该指向包含面向公众的JRE库源代码的src.zip文件。最好同时验证JRE_LIB。

JDK主目录通常包含“bin”子目录和“jre”子目录,因此如果您只看到“bin”子目录,那么您在JRE主目录中的几率很高。有了这些知识,希望你能够完成其余的工作。

答案 1 :(得分:1)

转到偏好设置(窗口 - >偏好设置),然后在搜索字段中输入“JRE”。

选择“已安装的JRE”。确保Java Runtime使用您期望的Java版本。

如果是,请选择它,然后单击“编辑”。 “rt.jar”的图标顶部应该有一个小文本符号(例如,它应该与dnsns.jar看起来不同)。

如果没有,请单击“恢复默认值”。如果这不起作用,请仔细检查路径。

这也应该解决你的其他问题。

要检查某个类是否包含调试符号,请使用javap -v对其进行反编译(请参阅此问题:Check if Java bytecode contains debug symbols

某些Java实现允许在加载类时忽略调试符号。这可能会导致包含符号的类的“未知来源”。我确信Sun的Java有这样一个选项,但我再也找不到了。

相关问题