jdk开发java程序的三个步骤(写了那么多年Java代码)
jdk开发java程序的三个步骤(写了那么多年Java代码)
2024-09-27 05:38:26  作者:蛋炒西红柿  网址:https://m.xinb2b.cn/life/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-09-27最伤泰迪的饲养方式现在养泰迪的人越来越多,但不是所有人都能把泰迪养好的,相信有些宠主就在饲养方式上面踩雷了,下面这几种最伤泰迪的饲养方式,很多宠主还在做!1、有些宠主可能不想给泰迪做绝育,但是也没有阻止它怀孕,导致泰迪。
  • z世代不被定义(ZR-V不想定义Z世代)
  • 2024-09-27ZR-V不想定义Z世代8月30日,广汽本田发布了旗下全新紧凑型SUV:ZR-V,中文名致在,指导价为15.99-19.59万元在目前广汽本田的产品系列中,它是最脱颖而出的那一个,全新的设计语言下的它颠覆了人们对于本田造型的。
  • 为什么说马丽的发展不如贾玲(谁才是你心中真正的喜剧女神)
  • 2024-09-27谁才是你心中真正的喜剧女神当马丽遇到贾玲,当小品遭遇相声,这两位年龄相仿,还都是中戏毕业的新喜剧女神,谁会让你更想笑呢?无图无真相,无数据不真理,今天卦主就从各方面分析一下马丽和贾玲的搞笑实力,看看到底谁是真正的新喜剧女神~!。
  • 文物分类方法的局限性(文物枕史的问题)
  • 2024-09-27文物枕史的问题枕是人们生活中极为常见的卧具,而陶瓷枕又是我国陶瓷艺术中一个非常独特的门类,蕴含着丰富的文化内涵西汉南越王博物馆自1991年入藏香港著名收藏家杨永德伉俪捐赠的200余枚陶瓷枕以来,将“陶瓷枕”作为一个。
  • 文化常识高中语文题和答案解析(高中语文古代文化常识题)
  • 2024-09-27高中语文古代文化常识题点击添加图片描述(最多60个字)编辑高三中国古代文化常识题(每小题3分,共计150分,时间共60分钟)1、我国古人对婴、幼、少、青、壮、中、老各个年龄的称谓,真可说是名目繁多,雅致有趣古代的“及笄之年。
  • AKB48里讲的进UG和选拨那些是什么意思
  • 2024-09-27AKB48里讲的进UG和选拨那些是什么意思AKB的选拔目前就进行了13th选拔和正在进行的17th两次简单来说就是第13张单曲和第17张单曲的选拔进选拔的是1-21位,UG是22-30,成为undergirl,在单曲中负责c/w曲至于多久搞一。
  • 桑蚕丝怎么洗才不会缩水(桑蚕丝你知道要这样洗吗)
  • 2024-09-27桑蚕丝你知道要这样洗吗不管怎么样真丝衣服是一定要按照规定的要求去清洗的,水温不能过高,不能超过30度为宜,过高的水温会损坏真丝,也会导致缩水一定要手洗,千万不要用洗衣机去清洗,要不然你漂亮的真丝衣服就会有并丝或“翻丝”等现。
  • 普洱市个人公积金查询登录(一部手机办事通)
  • 2024-09-27一部手机办事通昆明信息港讯3月29日,“一部手机办事通”普洱市住房公积金部分事项上线签字确认仪式在省“一部手机办事通”开发中心举行省“一机办”项目组、普洱市政务服务管理局、市住房公积金、市建行普洱分行相关负责人出席。
  • 葱油酥排饼怎么做
  • 2024-09-27葱油酥排饼怎么做这道简易版的葱油酥饼,加入了猪油后酥脆咸香的口感很不错的早上起来先和面,静置20分钟后再做,一会儿就搞定,再配上一碗粥,好吃营养的早餐解决了主料1种中筋面粉的做法大全中筋面粉250g辅料2种清水130。
  • 西米可以放多久(西米的存放时间)
  • 2024-09-27西米的存放时间西米可以放多久:西米可以放多久,需要看西米是熟的还是生的,如果是生的西米那么放置的时间是比较长的,一般保质期在12个月左右,但如果是熟的西米,那么放置的时间就比较短暂了,如果一天之内吃不完的话,一定要。
  • 陈晓陈妍希一生能走到头吗(年少轻狂陈晓陈妍希为爱远嫁)
  • 2024-09-27年少轻狂陈晓陈妍希为爱远嫁1、跟大S结婚的10余年里,汪小菲可能做梦都想要个陈妍希这样的老婆因为做陈妍希的老公,不需要买700多张机票“大小”CP离婚之前,大S因北京气候干燥,所以长期带着孩子住在娘家台湾这也导致汪小菲坐飞机去。
  • 最好用的除螨神器(这些除螨小神器)
  • 2024-09-27这些除螨小神器作者介绍:麦子,生活频道编辑,实用主义者,热爱生活,厨艺精湛,每周二周四更文今天,麦子想跟大家分享一个真理:不管你有多爱干净,总有一样东西去除不光那就是螨虫螨虫无处不在:地面上、沙发上、床上、衣服上,。