栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

        

          org.apache.maven.plugins

          maven-jar-plugin

          

            

              

                true

                lib/

                org.example.App

              

            

          

        

       

接着编辑运行配置,增加一个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端。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号