​昨天​​已经可以自己编译 JDK 了。但是很明显还缺一个重要的环节,那就是调试 JDK。调试 JDK 有朋友说可以使用 GDB,但是对于我们应用层开发者来说,使用 IDE 进行调试可能会习惯点,而且交互更加友好。经过对比 VS Code、Xcode 和 CLion。最终选择了 CLion。

CLion 官方下载地址:https://www.jetbrains.com/clion/

在 CLion 中引入 OpenJDK 工程

自己动手调试 JDK(CLion)_java

具体引入的工程是我昨天从 http://jdk.java.net/ 上下载的 OpenJDK 12。目录如下:

自己动手调试 JDK(CLion)_macosx_02

这里引入的时候,直接选择 openjdk 目录即可:

自己动手调试 JDK(CLion)_CL_03

接下来再配置相关的参数:

自己动手调试 JDK(CLion)_macosx_04

自己动手调试 JDK(CLion)_java_05

下面的 Build 要去掉,还要注意这里要选择昨天已经编译好了的 JDK 的 java 文件(Unix 可执行文件):

自己动手调试 JDK(CLion)_macosx_06

运行 OpenJDK,开始调试

在 java.c 的 ​​JavaMain​​ 函数中打一个断点,Debug 启动:

自己动手调试 JDK(CLion)_java_07

发现已经进去了。

调试自己编写的 Java 代码

先随便写一个 Hello.java 程序:

public class Hello {

public static void main(String[] args) {
System.out.print("hello");
}
}
➜  bin pwd
/Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin
➜ bin ./javac Hello.java
Hello.java:1: 错误: 写入Hello时出错: /Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin/Hello.class
public class Hello {
^
1 个错误
➜ bin sudo ./javac Hello.java
Password:

再在 CLion 进行配置:

自己动手调试 JDK(CLion)_macosx_08

Debug 运行:

自己动手调试 JDK(CLion)_macosx_09

控制台输出:

/Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin/java Hello
Signal: SIGSEGV (signal SIGSEGV)
Signal: SIGSEGV (signal SIGSEGV)
Signal: SIGSEGV (signal SIGSEGV)
hello
Process finished with exit code 0

也就是说目前已经实现了可以通过调试 OpenJDK 运行自己的代码!

欢迎关注公众号

​​​​​

自己动手调试 JDK(CLion)_CL_10