大家好,最近搭建了 openjdk 单步调试 环境,看了一些博客,过程中还是耗费很多时间,这次把步骤发出来,希望大家可以作为参照,节省环境搭建的时间。
从 gitee 上面把拉带代码,最好可以fork 一份到自己的仓库,这样以后对源码的修改可以push到远程,在跨设备工作时会更加方便,另外,个人帐号可以设置仓库为私有。
git clone https://gitee.com/mirrors/openjdk.git
切换到指定标签,从指定标签建立新分支。
git tag | grep b120
git checkout jdk8-b120
git checkout -b jdk8-b120
如果是自己的仓库,可以将新分支 push 到远程。
git remote add jdk8-b120 https://gitee.com/xxx/openjdk.git
git push jdk8-b120
接下来就是编译源码,是一个有门槛的部分,作为一名JAVA程序员,对c、c++编译,linux系统自带的gcc版本还是比较陌生的,下面会列出组件的版本。
基础环境配置
# gcc
gcc version 4.8.5 20150623
# centos
CentOS Linux release 7.9.2009 (Core)
# bootstrap java
java-se-7u75-ri
FIX: adjust
# hotspot/make/linux/makefiles/adjust-mflags.sh
# s/ -\([^ ][^ ]*\)j/ -\1 -j/ 原本在67行 删除就好
# Normalize any -jN argument to the form " -j${HBJ}"
MFLAGS=`
echo "$MFLAGS" \
| sed '
s/^-/ -/
s/ -j[0-9][0-9]*/ -j/
s/ -j\([^ ]\)/ -j -\1/
s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
' `
开始编译,先安装一波系统组件
sudo yum install libXtst-devel libXt-devel \
libXrender-devel cups-devel freetype-devel \
alsa-lib-devel -y
将 /home/xxx/xxx/java-se-7u75-ri 替换为自己的 java
若未采用上面列出的组件版本,这一步很有可能出现问题,可根据问题描述,百度解决的,需要一些耐心。
bash configure --with-target-bits=64 \
--with-boot-jdk=/home/xxx/xxx/java-se-7u75-ri \
--with-debug-level=slowdebug \
--enable-debug-symbols ZIP_DEBUGINFO_FILES=0
# Add: --with-extra-cflags=-Wno-deprecated-declarations
# Fix: cc1plus: all warnings being treated as errors
bash configure --with-target-bits=64 \
--with-boot-jdk=/home/hao/workspace/java-se-7u75-ri \
--with-debug-level=slowdebug \
--enable-debug-symbols ZIP_DEBUGINFO_FILES=0 --with-extra-cflags=-Wno-deprecated-declarations
这条命令耗时较久,可耐心等待
make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0
ppa 加速配置
# 中科大:http://launchpad.proxy.ustclug.org
sudo find /etc/apt/sources.list.d/ -type f -name "*.list" -exec sed -i.bak -r 's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1 http\2://launchpad.proxy.ustclug.org#ig' {} \;
在ubuntu20 上面编译需要降低 gcc 版本,还有glibc 版本过高 需要修改文件
#查看现有glibc 版本
strings /usr/lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC
sudo vim /etc/apt/sources.list
deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe
sudo apt-get install gcc-4.8 g++-4.8 g++-4.8-multilib
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
# 检查 gcc 版本是否降低
gcc -v
# 配置gcc 版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
# WARNINGS_ARE_ERRORS = -Werro
# 替换上面的语句 WARNINGS_ARE_ERRORS = -Wno-all
vim /hotspot/make/linux/makefiles/gcc.make
重新执行 bash configure
以上就是编译步骤,每一步都有说明,若大家完成了编译,接下来就是下载IDE,开始调试了。
2024-1-15 使用ubuntu20调试openjdk时,并没有降低gcc版本。操作系统和需要编译的openjdk版本都是同时期或者主流的版本时,编译过程中的错误很少,几乎没有,大家可以借鉴一下。
软件 | 版本 |
---|---|
virtual box | 7.0.10 |
ubuntu | 20.04.6-desktop-amd64 |
gcc | 9.4 |
Eclipse IDE for C/C++ Developers | 2023-12 |
openjdk | 12-ga |
configure 命令:bash configure --with-debug-level=slowdebug --disable-warnings-as-errors
make
说起IDE的选择,就比较纠结,尝试过几个IDE,最后选择了 eclipse cpp ,原因就是当初对 C 语言很不了解,边猜边试,试了几个IDE后,在 eclipse cpp 上面很容易就可以调试了,以下就是详细说明。
下载 eclipse cpp。
https://www.eclipse.org/downloads/packages/release
https://www.eclipse.org/downloads/packages/release/2019-03/r
https://archive.eclipse.org/technology/epp/downloads/release/2019-03/R/eclipse-cpp-2019-03-R-linux-gtk-x86_64.tar.gz
下载完成直接解压,进入 eclipse 目录使用命令启动 ./eclipse
导入项目
设置调试配置
开始调试
另外可以编写一个Java文件,编译后,单步调试。只需简单修改即可。
增加变量:
CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar:/home/xx/space/workspace-jee
JAVA_HOME
/home/xxx/code/jdk-jdk8-b115/build/linux-x86_64-normal-server-slowdebug/jdk
以上就是本次分享的 单步调试,希望可以帮助到大家,谢谢~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。