编译前准备

安装hg版本控制

yum install -y hg

安装依赖库

yum install -y "Development Tools"
yum install -y gcc g++ kernel-devel
yum? -y install libXtst-devel libXt-devel libXrender-devel libXi-devel

准备JDK

为编译虚拟机,首先必须获得虚拟机的源码,大家可以使用下面的命令获取JDK10的源码。
推荐使用较新的版本,因为老版本的编译脚本可能在某平台上存在问题。

hg clone http://hg.openjdk.java.net/jdk10/jdk10

准备一个BootJDK。Boot JDK用于OpenJDK编译的执行。这里用到的是JDK8,也推荐各位使用JDK8作为JDK10的Boot JDK

准备编译

准备就绪之后,就可以开始编译了。

进入解压后的openjdk目录:

image.png

执行configure脚本配置编译选项,本人的配置如下:

bash configure --with-debug-level=slowdebug --enable-dtrace --with-jvm-variants=server --with-target-bits=64 --with-memory-size=3000 --disable-warnings-as-errors --with-boot-jdk=/usr/local/src/jdk1.8 --with-native-debug-symbols=internal

配置成功后会显示下面的信息:
image.png

编译JVM

下载镜像文件

bash get_source.sh

编译

make images

此次编译将会生成debug版本的虚拟机,编译的过程可能会花费比较长的时间,一般来说,编译一个版本可能要15-45分钟的,视计算机性能而定。
当编译成功后,会有以下输出:

image.png

进入build目录,可以看到编译的结果,下面显示了debug版本的编译结果:

image.png

有了debug版本的虚拟机,就可以使用gdb对虚拟机进行调试了。

Java虚拟机调试

进入build/linux-x86_64-normal-server-slowdebug/jdk/bin/目录,用gdb启动Java可执行程序,随后就进到了gdb命令行环境:

gdb -args ./java -version

image.png

在main函数中打断点

略。。。


Zeran
32 声望4 粉丝

学而不思则罔,思而不学则殆。