大家好,最近搭建了一个openjdk单步调试环境。看了一些博客,这个过程还是花了不少时间。这次把步骤贴出来,希望大家可以作为参考,节省环境搭建的时间。最好从gitee上fork一份pull代码到自己的仓库,这样以后对源码的修改可以推送到远程,这样在跨设备工作的时候会更方便。此外,个人账户可以将仓库设置为私有。gitclonehttps://gitee.com/mirrors/openjdk.git切换到指定的标签,并从指定的标签创建一个新的分支。标签|grepb120gitcheckoutjdk8-b120gitcheckout-bjdk8-b120如果是自己的仓库,可以push新分支到远程。gitremoteaddjdk8-b120https://gitee.com/xxx/openjdk.gitgitpushjdk8-b120接下来就是编译源码,这是有门槛的部分。作为一个JAVA程序员,我编译c和c++,linux系统自带的gcc版本还是比较陌生,下面会列出组件的版本。基本环境配置#gccgccversion4.8.520150623#centosCentOSLinuxrelease7.9.2009(Core)#bootstrapjavajava-se-7u75-riFIX:adjust#hotspot/make/linux/makefiles/adjust-mflags.sh#s/-\([^][^]*\)j/-\1-j/最初在第67行删除。#将任何-jN参数规范化为"-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}}'/'`开始编译,先安装一波系统组件sudoyuminstalllibXtst-devellibXt-devel\libXrender-develcups-develfreetype-devel\alsa-lib-devel-y将/home/xxx/xxx/java-se-7u75-ri替换成你自己的java。如果没有使用上面列出的组件版本,则此步骤可能会出现问题。根据问题描述,百度已解决,需要一些耐心。bash配置--with-target-bits=64\--with-boot-jdk=/home/xxx/xxx/java-se-7u75-ri\--with-debug-level=slowdebug\--enable-debug-symbolsZIP_DEBUGINFO_FILES=0#添加:--with-extra-cflags=-Wno-deprecated-declarations#修复:cc1plus:所有警告都被视为错误bash配置--with-target-bits=64\--with-boot-jdk=/home/hao/workspace/java-se-7u75-ri\--with-debug-level=slowdebug\--enable-debug-symbolsZIP_DEBUGINFO_FILES=0--with-extra-cflags=-Wno-deprecated-declarations该命令耗时较长,可以耐心等待makeallDISABLE_HOTSPOT_OS_VERSION_CHECK=OKZIP_DEBUGINFO_FILES=0ppa加速配置#中国科学技术大学:http://launchpad.proxy.ustclug.orgsudo找到/etc/apt/sources.list.d/-typef-name"*.list"-execsed-i.bak-r's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1http\2://launchpad.proxy.ustclug.org#ig'{}\;在ubuntu20上编译需要降低gcc版本,glibc版本太高需要修改文件#Checktheexistingglibcversionstrings/usr/lib/x86_64-linux-gnu/libc.so.6|grepGLIBCsudovim/etc/apt/sources.listdebhttp://dk.archive.ubuntu.com/ubuntu/trustymainuniversesudoapt-getinstallgcc-4.8g++-4.8g++-4.8-multilibsudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-4.8100sudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-9100sudoupdate-alternatives--install/usr/bin/g++g++/usr/bin/g++-4.8100sudoupdate-alternatives--install/usr/bin/g++g++/usr/bin/g++-9100#查看gcc版本是否降低gcc-v#配置gcc版本sudoupdate-alternatives--configgccsudoupdate-alternatives--configg++#WARNINGS_ARE_ERRORS=-Werro#替换上面的语句WARNINGS_ARE_ERRORS=-Wno-allvim/hotspot/make/linux/makefiles/gcc.make重新执行bashconfigure。以上是编译步骤。每一步都有解释。如果编译完成,下一步就是下载IDE并开始调试。说到IDE的选择,我是比较纠结的。试了几个IDE,最后还是选择了eclipsecpp。原因是一开始对C语言了解不多。我猜测并尝试过。试了几个IDE之后,用eclipsecpp就很容易调试了,下面是详细的说明。下载eclipse-cpp。https://www.eclipse.org/downloads/packages/releasehttps://www.eclipse.org/downloads/packages/release/2019-03/rhttps://archive.eclipse.org/technology/epp/downloads/release/2019-03/R/eclipse-cpp-2019-03-R-linux-gtk-x86_64.tar.gz直接下载解压,进入eclipse目录使用命令启动./eclipseimportprojectsettingsdebugconfigurationstartdebugging编写一个Java文件,编译它,然后单步执行它。只是一个简单的修改。添加变量:CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar:/home/xx/space/workspace-jeeJAVA_HOME/home/xxx/code/jdk-jdk8-b115/build/linux-x86_64-normal-server-slowdebug/jdk以上就是本次分享的单步调试,希望对大家有所帮助,谢谢~
