【Java】 Intellij调试程序断点进入JDK源码

Posted by 西维蜀黍 on 2018-11-11, Last Modified on 2021-09-21

需求

IntelliJ中,希望调试自己的程序时,断点能够进入JDK的源代码。

设置

导入JDK源代码

进入File - Project Structure - SDKs - Sourcepath - 选择本机JDK所在目录下的src.zip文件

允许断点进入JDK源码

进入File - Setting - Build, Execution, Deployment - Debugger - Stepping

去掉勾选Do not step into the classes

尝试调试

打上断点,并运行:

此时,能够进入Stringsubstring()方法,但显示Variables debug info not available

这是因为JDK里的代码在打包时删除了用于调试的信息(位于%JAVA_HOME%\jre\lib\rt.jar),以减小安装包的体积。

我们通过重新编译JDK源代码,来获得这些调试信息。

编译过程可以参考https://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is

chenzw9547写了一个自动编译脚本同样可以作为参考。

编译完成后,将这个生成的rt-debug.jar复制到%JAVA_HOME%\jre\lib\endorsed\文件夹下(如果不存在endorsed文件夹,则新建一个)。

再次运行程序,则可以看到所有Debug信息:

Reference