learn and grow up

在mac的clion中快速调试openjdk

字数统计: 495阅读时长: 2 min
2020/12/26 Share

写在前面

​ 之前写过在mac中调试openjdk,使用的工具是xcode。

​ 但是这个xcode使用起来太过麻烦,有不少不人性化的设计,所以现在决定使用clion来编译和调试java,所以把过程中需要注意的实现记录下,以便后续参考

正文

  1. 下载并按照指引激活clion:https://sx.gxkjbg.com/201904/tools/JetBrains.CLion.2019.macOS_jb51.zip

  2. 和idea类似,导入Hotspot:new make project from source,选择:OPENJDK_HOME/src/hotspot

  3. 如果想要即时build,我研究了一半,没成功,但是也记录下,需要完善clion自动生成的cmakeList,添加如下配置,build的时候需要这些参数,参数配置如下:

    1. //主要设置了INCLUDE_SUFFIX_OS 、INCLUDE_SUFFIX_COMPILER 、INCLUDE_SUFFIX_CPU
      set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -D_GNU_SOURCE \
      -D_REENTRANT \
      -DLINUX -DINCLUDE_SUFFIX_OS=_linux -DVM_LITTLE_ENDIAN \
      -DTARGET_COMPILER_gcc \
      -DAMD64 -DHOTSPOT_LIB_ARCH='amd64' -DINCLUDE_SUFFIX_CPU=_x86 -D_LP64 -DTARGET_ARCH_x86 \
      -DINCLUDE_SUFFIX_COMPILER=_gcc -DCOMPILER1 -DCOMPILER2")
  4. 开始配置:config run,配置如下,作用是利用java命令在openjdk的jvm下运行编译好的class,并可以在源码上调试Hotspot:

    1. config

      1. 上图具体参数如下:

        1. program args:-XX:NewSize=6m -XX:SurvivorRatio=4 -XX:MaxNewSize=6m -Xlog:gc*:stdout:time,level,tags -XX:+UseParallelGC -Dfile.encoding=UTF-8 -classpath /Users/lumi/code/test/src HelloWord
            //classpath 为字面意思,这里设置为下面complier后的class目录,HelloWord为main类名
          working dic:/Users/lumi/code/test/src
            //工作空间,和class目录保持一致
          
    2. 配置run前的前置任务,网上很多文章说需要配置两个,但是我这里之配置了一个,因为我本地make一致不成功,而且没有改动jvm的源码是不需要make的,只需要complier java源码即可,complier配置如下,功能是修改源码后,通过javac重新编译java代码,并在指定目录生成class:

      1. config2
        1. 上图详细命令如下
          1. program:/Users/lumi/code/openJDK/jdk14uM/build/macosx-x86_64-server-slowdebug/jdk/bin/javac
          2. args:/Users/lumi/code/test/src/HelloWord.java
          3. workdic:$ProjectFileDir$ //和run命令保持一致
  5. 通过如上配置就可以进行实时修改java源码,debug调试jvm源码啦,很是方便和快捷,结果如下

    1. 结果1
    2. 结果2
CATALOG
  1. 1. 写在前面
  2. 2. 正文