Debugging IntelliJ IDEA中的JDK源代码

Debugging IntelliJ IDEA中的JDK源代码,debugging,intellij-idea,java,Debugging,Intellij Idea,Java,如何在IntelliJ IDEA 7中逐步浏览JDK源代码并查看调试信息?我目前可以点击断点并单步执行代码,但调试信息不可用。这意味着我看不到局部变量的值 如果有必要的话,我只想逐步浏览一个类的源代码。 值得一提的是,它是javax.swing.text.html.HTMLDocument类,我确实有一个相应的.java文件的副本。如果您查看[file menu->]Settings->Debugger->Stepping,您将看到一个列表“请勿进入这些类”,其中可能列出了“java.*”。是这

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

如果有必要的话,我只想逐步浏览一个类的源代码。

值得一提的是,它是
javax.swing.text.html.HTMLDocument
类,我确实有一个相应的
.java
文件的副本。

如果您查看[file menu->]Settings->Debugger->Stepping,您将看到一个列表“请勿进入这些类”,其中可能列出了“java.*”。是这样吗?你可以把它关掉

显然,调试信息不可用。根据:

遗憾的是,JDK类中有参数和局部变量的调试信息

几年前,我提出了一个请求,要求Idea从源代码中推断出必要的信息(基本上是将变量名转换为索引,再转换为本地变量的方法):

请投票/评论

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


有趣的是,您可以下载(在调试包中)。

更新:IntelliJ IDEA 13+版本

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

提供如何从源代码中重新生成rt.jar中的JDK类以及调试信息的说明


另外,这个问题不是IntelliJ IDEA特有的。

设置-编译器-java编译器-java选项,您应该选中“生成调试信息”选项,然后,它将使用调试信息进行编译。

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

我在Mac上这样做是为了获得Android源代码,但类似的方法也适用于您

  • 文件>项目结构

  • 在平台设置下选择“SDK”

  • 选择“Android SDK”

  • 选定的“源路径”选项卡

  • 按下“+”

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

  • 安装JDK
    • OSX下载:
    • Windows下载:
  • 添加src.jar路径
  • 转到:项目结构(项目设置)>平台设置>SDK>源路径
  • 将路径添加到src.jar
    • OSX示例:/Library/Java/JavaVirtualMachines/1.6.0_45-b06-451.jdk/Contents/Home
    • Windows示例:C:\Program Files\Java\jdk1.7.0\U 03(检查32位的程序(x86))
  • 等待索引的时间太长了
  • 删除调试器筛选器
  • 转到:设置>调试器>单步执行
  • 取消选中您想要的包,例如javax*

  • 您可以从外部库-->rt.jar

    中找到源代码,正如我在原始文章中提到的,我可以在javax.*类中很好地命中断点。问题是调试信息不可用。无论如何,只是为了确定,我按照你的建议做了,但是调试信息仍然不可用。我使用的是Ubuntu 16.04和OpenJDK 8。为了获得JDK源代码,我必须单独安装一个附加包:
    sudo apt get install openjdk-8-source
    。感谢您提供的解决方案。