Ubuntu16调试openjdk8(三种调试方式)

  • 系统环境和ide说明

Ubuntu16,idea和clion皆为2022.1。

  • 代码导入clion

把编译好的openjdk8(编译时需用bear生成compile_commands.json,编译方法见Ubuntu14/16编译openjdk8)导入clion项目。

  • clion配置

File=>settings,配置custon build targets,内容如下图,working directory里面是openjdk的目录

  • 通过java -version命令调试

点击上方配置,增加下面Custom Build Applicaion配置,make为我们上面增加的配置,注意Executable要选择我们编译出来的java

然后我们在openjdk8/hotspot/src/share/vm/prims/jni.cpp文件的create_vm上增加断点,接着通过上方debug按钮,即可调试,下面可以看到正确执行到了断点上,同理调试自己写的java类,也可以编译成class后,直接java xxxx(带main函数的类)

  • clion和idea下代码实现联合调试

在idea端,新建个打包成jar的maven项目,然后再pom.xml文件里面修改打包配置,然后maven install即可生成jar

        <plugin>

          <groupId>org.apache.maven.plugins</groupId>

          <artifactId>maven-jar-plugin</artifactId>

          <configuration>

            <archive>

              <manifest>

                <addClasspath>true</addClasspath>

                <classpathPrefix>lib/</classpathPrefix>

                <mainClass>org.example.App</mainClass>

              </manifest>

            </archive>

          </configuration>

        </plugin>

       

接着编辑运行配置,增加一个Remoto JVM debug,如下图jarDebugMain,下面参数自动带一般只需修改端口号即可,和下面clion处配置对应,此处配了8080

在clion端,增加debugJarTestOpenJdk8运行配置,如下面图所示

Program arguments里面的参数为(后面的jar,为idea下maven命令生成的,见上方):

-jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8080  testopenjdk8-1.0-SNAPSHOT.jar

Working directory里面的参数为Idea中maven install生成jar的目录

上面两个配置都配置好后,首先运行clion中的debugJarTestOpenJdk8配置

下方控制台会输出,正在监听

然后运行idea上的jarDebugMain配置,此时,能触发clion处打在cpp文件上的断点,可以同样用jni.cpp做测试,并且输出内容会在clion上,如果修改文件,要重新maven install之后,再运行jarDebugMain。

  • window上通过gdb调试openjdk

在linux端启动gdbserver服务(没有这个命令的话可以用apt-get install安装),如下面,其中java要用我们自己编译的

gdbserver *:1234 /opt/dev/workspace/clion/openjdk8/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -version

       接着,在window端clion上导入我们编译好的openjdk8(拷贝linux中编译好的即可)。

       然后按下方+号增加一个Remote Host配置(这步是使用linux环境中的配置,如果中间三列冒红的话,需要在linux中安装cmake(apt-get install cmake))

       然后,在window的clion运行配置中增加一个Remote Debug,这里命名为openjdk8Remo,注意下方标红处的配置,下面remote处的分别是linux上和window上的openjdk路径。

       接着windows上的clion代码处加断点,运行openjdk8Remo即可调试(相对linux直接调试会比较慢),接着结果会输出在linux端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值