若是使用 hg 下载源代码会很漫长并且常常掉线,能够使用 github 上的源代码镜像html
# git clone https://github.com/dmlloyd/openjdk
在构建以前建议仔细阅读源代码目录下的 README-builds.html or README-builds.md 文件java
# bash ./configure
configure 错误输出很 nice,若是缺乏库,使用 apt install 便可,例如:linux
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:git
==================================================== 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
构建完成后在源代码 build 目录下会生成 linux-x86_64-normal-server-slowdebug,里面包含生成的 jdk,hotspot .etcgithub
$ 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
下载和安装 CLion IDEbash
以源代码方式新建一个工程,将 hotspot 相关的源代码导入 IDE工具
CLion 集成 CMake(Java 界的 Maven)进行构建,编辑 CMakeLists.txt 里面的 set 语句块,删除 x86 之外的源代码,减小 IDE 要索引的文件,加快速度ui
set(SOURCE_FILES cpu/x86/vm/... ...
编辑 "运行&调试" configuration,将 executable(要运行的目标程序)修改为 在 make 阶段生成的 jdk/bin/javathis
去掉 Before launch 里面的 build 动做,在 IDE 里面咱们没法进行构建spa
打开 jni.cpp 文件,找到 JNI_CreateJavaVM,设置断点,点击工具栏上那个"小臭虫"开始调试