2009-08-21 142 views
46

如何在IntelliJ IDEA 7中逐步浏览JDK源代码并查看调试信息?我目前可以打破断点并逐步执行代码,但调试信息不​​可用。这意味着我看不到局部变量的值。步骤通过IntelliJ IDEA中的JDK源代码

我只想穿过一个类的源代码,如果这很重要。 (对于它的价值,这是javax.swing.text.html.HTMLDocument类(我确实有一个相应的.java文件的副本)。)

回答

32

如果您在[文件]菜单 - >]设置 - >调试器 - >步进中看到一个列表“不要进入这些类”,可能在那里列出“java。*”。是这样吗?你可以把它关掉。

显然调试信息不​​可用。根据this thread

不幸的是,JDK类有调试信息的参数和局部变量剥离。

几年前,我提起这个想法应该推断从源代码中的必要信息的请求(基本上是转换变量名索引到方法的局部变量):
Debugger: Show variable information when no debug info

请投票/评论。

作为一种解决方法,您可以从源代码重新编译JDK,但是您需要排除一些没有附加所有必需源代码的类。

有趣的是,你可以下载beta version of Java 6u18, which has debug information in it(在DEBUG包中)。

+0

正如我在原来的文章中提到,我打我的断点只是在使用javax罚款。*类。问题是调试信息不​​可用。无论如何,只要确定,我做了你的建议,但调试信息仍然不可用。 – 2009-08-21 19:56:36

27

UPDATE:IntelliJ IDEA 13+版本can provide local variables information without debug info

作为JDK一部分的Java类由于大小和性能原因而编译时没有调试信息。如果您需要这些类中的调试信息,您需要安装开发版本的JDK,其中类是使用调试信息构建的,或者在启用调试信息的情况下重新构建要从源代码调试的JDK部分这些新版本的JDK将这些版本的类放入jar中。

This thread提供了如何使用调试信息从源代码重建rt.jar中的JDK类。

P.S.这个问题不是特定于IntelliJ IDEA的。

0

设置 - 编译器-java编译器-java选项,你应该检查选项“生成调试信息”,然后,它会用调试信息编译。

3

随着“不要进入这些类”信息,应配置src.jar。右键单击该项目,选择“打开模块设置”。在平台设置下,选择“SDK”。选择您正在使用的Java SDK版本。选择Sourcepath选项卡,点击“+”按钮,然后从JDK中添加您的src.jar(或者为OSX JDK单独下载源代码)。这将允许您打开JDK类并在调试时进入它们。

+0

我在Ubuntu 16.04和OpenJDK 8上。 要获得JDK源代码,我必须单独安装一个附加软件包: 'sudo apt-get install openjdk-8-source'。 感谢http://askubuntu.com/questions/755853/how-to-install-jdk-sources提供的解决方案。 – 2016-11-02 23:03:12

1

我在我的Mac上这样做了我的Android源代码,但类似的方法应该为你工作。

  • 文件>项目结构

  • 选择 “软件开发工具包” 下的平台设置。

  • 选择 “Android SDK中”

  • 选择 “SOURCEPATH” 选项卡

  • 按下 “+”

  • 浏览到的我的Java源代码中的位置

12
  1. 安装JDK
  2. 添加src.jar路径
    1. 转到:项目结构(项目设置)>平台设置>的SDK> Sourcepath
    2. 添加到src.jar的路径
      • OSX例如:/Library/Java/JavaVirtualMachines/1.6.0_45-b06-451.jdk/Contents/Home
      • Windows示例:C:\ Program Files文件\的Java \ jdk1.7.0_03(检查程序(86)对于32位)
    3. 等待很长时间才能建立索引!
  3. 删除调试器滤波器
    1. 转到:设置>调试>步进
    2. 取消选中包(多个)需要,例如使用javax。*