前言
源代码下载
如果使用 hg 下载源代码会很漫长而且经常掉线,可以使用 github 上的源代码镜像
# git clone https://github.com/dmlloyd/openjdk
构建
configure
在构建之前建议仔细阅读源代码目录下的 README-builds.html or README-builds.md 文件
# bash ./configure
configure 错误输出很 nice,如果缺少库,使用 apt install 即可,例如:
configure: error: Could not find alsa! You might be able to fix this by running
'sudo apt-get install libasound2-dev'.
configure exiting with result code 1
配置完成后会有个 summary:
====================================================
A new configuration has been successfully created in
/home/xingpingz/studies/openjdk/build/linux-x86_64-normal-server-slowdebug
using configure arguments '--with-debug-level=slowdebug'.
Configuration summary:
* Debug level: slowdebug
* HS debug level: debug
* JDK variant: normal
* JVM variants: server
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
* Version string: 9-internal+0-adhoc.xingpingz.openjdk (9-internal)
Tools summary:
* Boot JDK: java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode) (at /opt/jdk1.8.0)
* Toolchain: gcc (GNU Compiler Collection)
* C Compiler: Version 5.4.0 (at /usr/bin/gcc)
* C++ Compiler: Version 5.4.0 (at /usr/bin/g++)
Build performance summary:
* Cores to use: 4
* Memory limit: 11963 MB
make
# make
构建完成后在源代码 build 目录下会生成 linux-x86_64-normal-server-slowdebug,里面包含生成的 jdk,hotspot .etc
$ ll
总用量 120K
-rw-rw-r-- 1 xingpingz xingpingz 2.7K 2月 14 13:56 bootcycle-spec.gmk
-rw-rw-r-- 1 xingpingz xingpingz 7.0K 2月 14 13:56 buildjdk-spec.gmk
-rw-rw-r-- 1 xingpingz xingpingz 17K 2月 14 14:02 build.log
drwxrwxr-x 17 xingpingz xingpingz 4.0K 2月 14 14:02 buildtools
-rwxrwxr-x 1 xingpingz xingpingz 3.6K 2月 14 13:56 compare.sh
-rw-rw-r-- 1 xingpingz xingpingz 13K 2月 14 13:56 configure.log
drwxrwxr-x 2 xingpingz xingpingz 4.0K 2月 14 13:56 configure-support
drwxrwxr-x 4 xingpingz xingpingz 4.0K 2月 14 13:57 hotspot
drwxrwxr-x 2 xingpingz xingpingz 4.0K 2月 14 13:59 images
drwxrwxr-x 7 xingpingz xingpingz 4.0K 2月 14 14:02 jdk
-rw-rw-r-- 1 xingpingz xingpingz 1.3K 2月 14 13:56 Makefile
drwxrwxr-x 6 xingpingz xingpingz 4.0K 2月 14 13:57 make-support
-rw-rw-r-- 1 xingpingz xingpingz 33K 2月 14 13:56 spec.gmk
drwxrwxr-x 13 xingpingz xingpingz 4.0K 2月 14 14:01 support
IDE 调试
下载和安装 CLion IDE
以源代码方式新建一个工程,将 hotspot 相关的源代码导入 IDE
CLion 集成 CMake(Java 界的 Maven)进行构建,编辑 CMakeLists.txt 里面的 set 语句块,删除 x86 以外的源代码,减少 IDE 要索引的文件,加快速度
set(SOURCE_FILES
cpu/x86/vm/...
...
编辑 "运行&调试" configuration,将 executable(要运行的目标程序)修改成 在 make 阶段生成的 jdk/bin/java
去掉 Before launch 里面的 build 动作,在 IDE 里面我们无法进行构建
打开 jni.cpp 文件,找到 JNI_CreateJavaVM,设置断点,点击工具栏上那个"小臭虫"开始调试
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。