Mac 编译并调试 OpenJDK11

  • Post author:
  • Post category:其他


鉴于目前Mac下编译openJDK的文章较为杂乱且步骤不够清晰明了,写下自己编译OpenJDK的过程,希望能帮助大家少走弯路。



编译/调试 环境

  1. MacOS Big Sur
  2. Clion 2021.2
  3. IDEA 2021.2
  4. Terminal(Mac自带的终端)



编译步骤



下载源码

进入

https://hg.openjdk.java.net/jdk/

选择你需要编译的版本。



进入下载目录并解压

选择你下载的压缩包对应的解压命令解压。



打开终端并进入源码目录

本次编译我的jdk源码目录为:

/Users/alex/apps/jdk11-1ddf9a99e4ad



安装相关工具

brew install FreeType
brew install Autoconf
brew install ccache

如果上述安装中提示你有什么文件没找到,无法打开,进入那个目录,将对应的文件找出并且重命名即可。注意以下命令中的

${username}

需替换为你的用户名。

cd /Users/${username}/Library/Caches/Homebrew/downloads/
## 假设提示你 883c03046842ddf554a02eed5bce40b6641f7f2fe2b6ee8fda64c663fd609239--pcre2-10.37_1.big_sur.bottle.tar.gz 没找到
ls | grep 'pcre2'
## 输出38089acf544a53cf2436d7390138f6b0cda498f61a14c854457242f07a99e886--pcre2--10.37_1.big_sur.bottle.tar.gz
mv 38089acf544a53cf2436d7390138f6b0cda498f61a14c854457242f07a99e886--pcre2--10.37_1.big_sur.bottle.tar.gz 883c03046842ddf554a02eed5bce40b6641f7f2fe2b6ee8fda64c663fd609239--pcre2-10.37_1.big_sur.bottle.tar.gz



初始化配置

bash ./configure --with-target-bits=64 --enable-ccache --with-jvm-variants=server --enable-dtrace --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --disable-warnings-as-errors --with-debug-level=slowdebug 2>&1 | tee configure_mac_x64.log



开始编译

make images



调试



源码目录新增

CMakeLists.txt

文件

文件内容:

cmake_minimum_required(VERSION 3.16)
project(hotspot)

file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.hpp" "*.c" "*.h")

add_executable(hotspot ${SOURCE_FILES})



打开Clion导入openJDK

File->Open->choose your jdk path->As Cmake project

等待Clion index完成



构建编译环境

右上角

edit configurations

,选择

hotspot | Debug

  1. Executable,选择你编译好的java可运行程序。我的目录:

    /Users/alex/apps/jdk11-1ddf9a99e4ad/build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java
  2. Program arguments,-version。
  3. Before launch,下面有一栏:Build。删掉。
  4. 点运行,不出意外就能看见下面的输出。

    在这里插入图片描述

    在这里插入图片描述

    至此,调试环境构建完毕。



debug

以下内容引用自简书

https://www.jianshu.com/p/0fc877be4c3d

,侵权删。

如果你点的是debug而不是run,你会发现你没打断点,但是会进入以下这个断点,此时我们在LLDB tab下执行

pro hand -p true -s false SIGSEGV SIGBUS

命令即可。

在这里插入图片描述

在这里插入图片描述

不过每次debug的时候都要输入这么一句就很麻烦,所以我们可以在~/.lldbinit文件中写入如下内容(其中main.c文件的路径自行替换)


breakpoint set --file /Users/alex/apps/jdk11-1ddf9a99e4ad/src/java.base/share/native/launcher/main.c --line 98 -C "pro hand -p true -s false SIGSEGV SIGBUS" --auto-continue true

vim ~/.lldbinit



外部JAVA文件调试JDK

edit configurations-> 左上角“+” -> Custom Build Application.

红圈为需要自行配置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调试结果:

在这里插入图片描述



版权声明:本文为u012667477原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。