Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)相关的知识,希望对你有一定的参考价值。

一、准备环境

1.1、服务器资源

操作系统:CentOS 6.8 x64
操作软件:CLion (JetBrains的产品)

二、下载源码(OpenJDK8)

yum 源使用的是阿里的 https://opsx.alibaba.com/mirrorlang=zh-CN
这里使用 mercurial(类似 Git 的版本控制系统) 下载源码,方便更新。

  1. 安装hg服务

yum install mercurial -y

  1. 使用hg下载jdk8u源码到/opt目录

hg clone http://hg.openjdk.java.net/jdk8u/jdk8u /opt/jdk8u

  1. 更新代码,操作和 Git 类似

cd /opt/jdk8u
hg pull

  1. 获取完整源码(下载时间较长)

sh get_source.sh

三、编译源码

  • 构建JDK8需要使用JDK7 Update 7或更高版本的版本作为引导(Bootstrap)JDK,但不应使用JDK8作为引导JDK;
  • JDK7下载:https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
  • 这里下载:jdk-7u80-linux-x64.tar.gz
  1. 将jdk-7u80-linux-x64.tar.gz文件上传到linux

使用相关的文件上传工具即可:
上传到linux下的:/opt/tools/ 目录下

  1. 解压jdk7到/opt目录下

cd /opt/tools
tar -zxf jdk-7u80-linux-x64.tar.gz -C /opt/

  1. 配置

cd /opt/jdk8u
chmod -x configure

  1. 安装编译所需工具包

yum install -y unzip zip libXtst-devel libXt-devel libXrender-devel cups-devel freetype-devel alsa-lib-devel fontconfig-devel
yum groupinstall -y “Development Tools”

  1. 配置编译环境

./configure --with-target-bits=64 --with-boot-jdk=/opt/jdk1.7.0_80/ --with-debug-level=slowdebug --with-native-debug-symbols=internal

配置说明:
–with-target-bits=64 :指定生成64位jdk;
–with-boot-jdk=/opt/jdk1.7.0_80/:jdk7的路径;
–with-debug-level=slowdebug:编译时debug的级别,有release, fastdebug, slowdebug 三种级别;

  1. 编译(编译时间较长,耐心等待)

make all

  1. 测试

./build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -version

openjdk version "1.8.0-internal-debug"
OpenJDK Runtime Environment (build 1.8.0-internal-debug-root_2020_05_11_04_45-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00-debug, mixed mode)
  1. 复制拷贝一份

zip jdk8u.zip jdk8u -r

四、Windows 远程调试

  1. linux环境准备

yum install cmake -y
yum install gcc-c++ -y
yum install gdb -y
yum install gdb-gdbserver -y

  1. Windows环境准备
  1. 首先用 Clion 新建一个空项目

  1. 设置远程调试


  1. 同步代码(windows 上的代码需要和 CentOS 上的代码一样)连接信息

4.对应目录,本地目录为新建的OpenJDK8项目路径

  1. 同步时要排除的本地目录

  1. 下载远程代码(下载之后linux上的代码,好像会缺失某些文件,所以最好先将linux上的代码复制一份)


  1. 设置远程调试,地址为 CentOS 地址,端口随意



3. Linux环境准备

  1. 将jdk8u还原
    unzip jdk8u.zip
  1. linux上启动 GDB,端口与上面对应

gdbserver :1234 /opt/jdk8u/build/linux-x86_64-normal-server-release/jdk/bin/java -version

  1. linux启动1234端口(防火墙)

vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1234 -j ACCEPT

重启防火墙
service iptables restart

  1. 打上断点,启动的 DeBug(比较慢,载入 libjvm.debuginfo 的时候)

最后:linux构建JVM源码完成。
如果遇到什么问题,可以联系我qq:1091391667
祝大家构建成功!!!

以上是关于Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)的主要内容,如果未能解决你的问题,请参考以下文章

编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤

编绎调试 HotSpot JVM 及在 Eclipse 里调试

从零开始学JVM系列:搭建HotSpot源码阅读环境

深入解析JVM源码 - 创建HotSpot

从openJDK官网下载Hotspot 源码

找了很久的网上唯一的一套JVM底层Hotspot源码视频,免费送!