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
祝大家构建成功!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值