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 的版本控制系统) 下载源码,方便更新。
- 安装hg服务
yum install mercurial -y
- 使用hg下载jdk8u源码到/opt目录
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u /opt/jdk8u
- 更新代码,操作和 Git 类似
cd /opt/jdk8u
hg pull
- 获取完整源码(下载时间较长)
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
- 将jdk-7u80-linux-x64.tar.gz文件上传到linux
使用相关的文件上传工具即可:
上传到linux下的:/opt/tools/ 目录下
- 解压jdk7到/opt目录下
cd /opt/tools
tar -zxf jdk-7u80-linux-x64.tar.gz -C /opt/
- 配置
cd /opt/jdk8u
chmod -x configure
- 安装编译所需工具包
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”
- 配置编译环境
./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 三种级别;
- 编译(编译时间较长,耐心等待)
make all
- 测试
./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)
- 复制拷贝一份
zip jdk8u.zip jdk8u -r
四、Windows 远程调试
- linux环境准备
yum install cmake -y
yum install gcc-c++ -y
yum install gdb -y
yum install gdb-gdbserver -y
- Windows环境准备
- 首先用 Clion 新建一个空项目
- 设置远程调试
- 同步代码(windows 上的代码需要和 CentOS 上的代码一样)连接信息
4.对应目录,本地目录为新建的OpenJDK8项目路径
- 同步时要排除的本地目录
- 下载远程代码(下载之后linux上的代码,好像会缺失某些文件,所以最好先将linux上的代码复制一份)
- 设置远程调试,地址为 CentOS 地址,端口随意
3. Linux环境准备
- 将jdk8u还原
unzip jdk8u.zip
- linux上启动 GDB,端口与上面对应
gdbserver :1234 /opt/jdk8u/build/linux-x86_64-normal-server-release/jdk/bin/java -version
- linux启动1234端口(防火墙)
vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1234 -j ACCEPT
重启防火墙
service iptables restart
- 打上断点,启动的 DeBug(比较慢,载入 libjvm.debuginfo 的时候)
最后:linux构建JVM源码完成。
如果遇到什么问题,可以联系我qq:1091391667
祝大家构建成功!!!
以上是关于Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)的主要内容,如果未能解决你的问题,请参考以下文章
编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤