jdk开发java程序的三个步骤(写了那么多年Java代码)
jdk开发java程序的三个步骤(写了那么多年Java代码)
2024-11-08 02:46:44  作者:蛋炒西红柿  网址:https://m.xinb2b.cn/sport/sko427470.html


继上篇文章 全网最新最简单的 OpenJDK13 代码编译 之后,我们有了自己编译后的 jdk 和 hotspot,如下图所示。接下来就来干一番事情。


搭建调试环境

1.下载 CLion 软件

Jetbrains 是一家非常牛逼的公司,咱 java 里面用到的 IDEA 功能很强大,这公司也为 C/C 提供一个 IDE,名叫 https://www.jetbrains.com/clion/,咱需要下载这个 IDE 来调试 JVM 源码。

2.导入源码

安装完 CLion 之后,咱就可以先导入代码,下面简单记录一下操作步骤。

选择 New CMake Project from Sources


打开我们下载 OpenJDK13 的目录,我的目录是 /opt/java/openjdk/jdk13。


接下来有弹框点击 Next 就行了,等待导入源码完成(需要几分钟,可以喝杯茶)。

3.启动配置

导完源码后,我们需要配置启动程序,这里有些配置需要重新指定,主要有下面 2 点。

Executable 修改为咱们编译后的 java 程序。


Build 需要删除掉。


4.打下断点

我们在 thread.cpp 代码的 Threads::create_vm 方法打下断点。


5.开始 Debug

点击 Debug 按钮,开始调试我们的 JVM 代码。可以看到我们打的断点生效了,如下图所示。


恭喜,我们成功调试 JVM 代码。不过发现了下面这个异常信息,解决它。

6.发现这个异常

按 F9 让程序继续跑,我们发现 Console 出现了下面红框的一行字。


这是 GDB 的异常信息,我们可以通过在我们的用户目录下添加配置来解决这个问题。创建 ~/.gdbinit 文件,添加如下配置。

handle SIGSEGV nostop noprint passhandle SIGBUS nostop noprint passhandle SIGFPE nostop noprint passhandle SIGPIPE nostop noprint passhandle SIGILL nostop noprint pass

再运行就不会有这个异常信息了。

调试自己的代码

上面已经调通了我们编译的 JVM 源码,有同学可能想知道,那要调试自己写的代码得怎么操作呢?我们上面已经看到 Debug 到 JVM 源码了,我们自己的代码则可以通过我们编译后的 JDK 来编译,然后在程序执行参数那里指定。下面举个例子。

1.编写 Test 代码

我们编写一个简单的 Hello JVM 程序,代码如下。

public class Test { public static void main(String[] args) { System.out.println("hello jvm"); }}

2.javac 编译

通过我们编译后的 JDK 命令 javac Test.java 来编译。

liebrother@liebrother:/opt/java/openjdk/jdk13/build/linux-x86_64-server-release/jdk/bin$ ./javac Test.java

3.配置启动参数

然后在 Clion 程序启动配置那里指定我们的类 Test。


结果就是我们的程序被运行了。


以上就是我们今天要讲的在 JVM 层面上调试我们自己写的程序。

总结

总结一下搭建这套 JVM 环境。搭建过程中其实没有很波折,官方文档写的很清晰(虽然都是英文的),这 2 篇文章也是尽最大的努力,把一些步骤简化,也截图保留下来,一方面给自己回顾的机会,一方面也是给有想要搭建这套环境的朋友们一个捷径。这套环境接下来的定义是:给自己深入了解 JVM 的机会,在遇到某些知识点不清晰,不明白原理的时候,就可以看一看源码,揪出源头的逻辑

非常建议朋友们搭建这么一套环境,也不要怕 JVM 里面都是 C/C 代码,可能刚开始看的时候会很费劲,看多了就习惯了。

行为型模式:责任链模式

行为型模式:迭代器模式

创建型模式:单例模式

觉得文章有用帮忙转发&点赞,多谢朋友们!

  • 把空气刘海变成蓬松的刘海(空气刘海再也不扁塌)
  • 2024-11-08空气刘海再也不扁塌喜欢空气刘海的姐妹们是不是都遇到过这样的情况,刚夹好的刘海一会就塌掉了,挨着额头一溜溜的显得非常油腻,一天的心情都非常“开心”了那么怎么打造空气感刘海和维持它的蓬松度呢?尤其是在炎炎的夏季,空气刘海和。
  • 龙鱼虎鱼混养最佳几条(饲养在龙鱼缸里的观赏鱼)
  • 2024-11-08饲养在龙鱼缸里的观赏鱼看老道文章,学老道养鱼,关注养鱼老道,关注更多观赏鱼实践知识,让我们简单养水、轻松养鱼!今天养鱼老道要给大家介绍一种最近非常流行的龙鱼缸里的配鱼,它们和水虎鱼是近亲,也是南美洲加拉辛的一种观赏鱼,在原。
  • 北京冬奥会纪念钞上的人物是谁(北京冬奥会纪念钞来了)
  • 2024-11-08北京冬奥会纪念钞来了中国人民银行定于2021年12月21日发行第24届冬季奥林匹克运动会纪念钞一套,每张面额均为20元包括冰上运动项目纪念钞和雪上运动项目纪念钞各1张,冰上运动项目纪念钞为塑料钞,雪上运动项目纪念钞为纸钞。
  • 写草莓的美味诱人(写点生活春之味)
  • 2024-11-08写点生活春之味□陈红华母亲来电话说,樱桃红了,抽空回去一趟,尝尝鲜起新屋时,父亲在门前菜园种了一棵樱桃,后来又在山边种了一棵想不到樱桃长势喜人,第一年,它就结果了一串串缀满枝头,娇艳欲滴,玲珑剔透,味美形娇,让人垂。
  • 16年奥运会在哪国(在巴西举行)
  • 2024-11-08在巴西举行在巴西举行,2016年里约热内卢奥运会主会场是马拉卡纳体育场举办竞选:2016年奥运会申办进程于2007年5月16日启动,所有国际奥林匹克委员会成员国所管辖范围内城市均可向国际奥委会提出申办意愿200。
  • 香菇长了白色霉还能吃吗(香菇长了白色霉还能不能吃)
  • 2024-11-08香菇长了白色霉还能不能吃香菇长了白色霉不能吃香菇属于菌类,营养价值高,但是香菇发霉后食用过多的话还是会导致中毒的,建议不要食用香菇已变质,即使清洗后食用也无营养,还会残留霉菌防止导致食用中毒对身体健康导致伤害,所以香菇长了白。
  • 培养好孩子从培养好家风开始(教养孩子最重要)
  • 2024-11-08教养孩子最重要从孩子一出生开始,有自己的思维能力和表达能力时,他就已经在潜移默化的受到家庭教育的影响了不同的家庭教育是可以成就孩子不同的人生的,好的家庭教育会树立孩子良好的三观,优良的品格和优秀的习惯等等,会让孩子。
  • 三角函数公式记忆口诀大全(三角函数公式需要背下来吗)
  • 2024-11-08三角函数公式需要背下来吗我们经常能听到这样的言论:“三角函数公式不用死记硬背”“那些公式都可以现场推出来,现推现用就行”这种言论,往往会收到很多赞同,一方面来自学生,一方面来自家长但不会有来自老师的,因为老师都会发现:数学学。
  • 候补抢票和抢票是什么意思(候补抢票和抢票的意思)
  • 2024-11-08候补抢票和抢票的意思候补抢票是指如果想买的车票已经卖完了,可以预付款提交候补订单,后期若有人改签或退票,系统将自动按排位分配车票抢票是指在车票开售之后,购买自己想要的车票12306候补购票,是12306铁路官方的一种购票。
  • 鲜玉米粒饼的方法(具体步骤是什么)
  • 2024-11-08具体步骤是什么糯米粉和玉米粉以2:1的比例,取1/3的甜玉米取粒稍切碎把另外2/3的玉米磨成蓉,加到粉里,把玉米粒、玉米蓉、粉类加适量白糖,拌匀加适量温水和成软硬适中的面团,平底锅放少量油把面团整成一个个小饼,并粘。