jdk开发java程序的三个步骤(写了那么多年Java代码)
jdk开发java程序的三个步骤(写了那么多年Java代码)
2024-11-22 02:03:50  作者:蛋炒西红柿  网址: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-11-22看似治愈实际致郁的来自新世界说起科幻作品,大多围绕未来高度发达的科技展开,或是引发战争,或是摧毁自然,或是崭新生活,作者们以自己强大的想象力为我们展现了未来的无数种可能性但其中也有格格不入者,比如日本的作家贵志佑介,他笔下的《来。
  • 手机怎么变成了来电提醒(手机来电显示岂能说变就变)
  • 2024-11-22手机来电显示岂能说变就变您是否遇到过陌生号码来电,回拨却提示空号;明明来电显示是熟悉号码,话筒中传出的却是陌生的声音9月上旬,有多位网友反映,近期经常接到朋友的恶作剧电话,来电显示竟然是自己的手机号码记者经过探访发现,只要通。
  • 关于乡村物流发展的冷静思考(非凡十年农村物流提速)
  • 2024-11-22非凡十年农村物流提速指出,构建新发展格局是我们应对世界大变局的战略举措,也是我们顺应国内发展阶段变化、把握发展主动权的先手棋把战略基点放在扩大内需上,农村有巨大空间,可以大有作为党的十八大以来,我国广袤乡村路更畅通、网速。
  • 数九的意思和含义
  • 2024-11-22数九的意思和含义数九,又称冬九九,是中国民间一种计算寒天与春暖花开日期的方法一般“三九、四九”时最冷,是一年中最冷的时段当数到九个“九天”(九九八十一天),便春深日暖、万物生机盎然,是春耕的时候了数九方法在我国民间口。
  • 冒险岛手游可以转职业吗(冒险岛手游各职业怎么转职)
  • 2024-11-22冒险岛手游各职业怎么转职冒险岛手游各职业怎么转职?下面小编为大家带来冒险岛手游各职业转职详解,希望这篇攻略详解能够对大家有所帮助恶魔猎手一转等级:10级二转等级:14级三转等级:39级四转等级:94级爆莉萌天使一转等级:6级。
  • 每个手机都得无线充电吗(你的手机无线充电了吗)
  • 2024-11-22你的手机无线充电了吗来源:安徽日报手机、智能手表、耳机、电动牙刷……随着技术的发展,近两年,无论是国产厂商,还是国外品牌产品,尤其在手机领域,越来越多的电子产品支持无线充电,这让无线充电器、无线充电宝等周边产品越来越丰富。
  • 中考艺术特长生都有什么专业
  • 2024-11-22中考艺术特长生都有什么专业1.表演专业表演专业要求考生具备和掌握表演艺术的基本理论和基本技巧,在戏剧、戏曲、影视和舞蹈等方便有自己的表演形式,可以独立完成不同人物形象的创作2.播音与主持专业播音与主持专业要求考生具备广播电视新。
  • 如何认识高段位的人 什么是高段位的人呢
  • 2024-11-22如何认识高段位的人 什么是高段位的人呢什么是高段位的人呢?让你看不出他是高段位的人,和普通人一样,普通的不能再普通  老子说,智者不言,言者不知,挫其锐,解其分,和其光,同其尘大意是说,高段位智慧的人一般都比较低调内敛,不多说话他们被岁月。
  • 357岁保寿硚重现汉正街(357岁保寿硚重现汉正街)
  • 2024-11-22357岁保寿硚重现汉正街25日,保寿硚重现汉正街,市民通过古桥进入云尚·武汉国际时尚中心记者胡冬冬摄357年前,汉正街多福路和中山大道的交叉地,曾经有一条玉带河,河上有一座保寿硚几经沧桑,沉埋地底的保寿硚重见天日8月25日,。
  • 急诊科多是哪些病人(急诊科到底是怎样的存在)
  • 2024-11-22急诊科到底是怎样的存在写这篇文章的原因是源于昨天随手发的微头条,争议比我想象得多骂我的人不少,但是我并不生气这是因为屁股决定脑袋,站在病人的立场上思考问题,我能理解但是看留言,许多人对急诊工作还真的是不了解,所以我感觉很有。
  • 死神觉醒大结局(100还原著死神觉醒剧情)
  • 2024-11-22100还原著死神觉醒剧情大动作先兆?近期,“划”时代格斗动作手游《死神觉醒》发布了一套疑似“虚圈”的精美场景原画,引起了玩家对游戏新版本的大胆猜测目前,游戏按照原著《死神BLEACH》的走向,玩家在游戏中可以体验到“尸魂界篇。
  • 清远黄腾峡有哪些景点(清远古龙峡两天一夜最全攻略不踩雷)
  • 2024-11-22清远古龙峡两天一夜最全攻略不踩雷趁着假期(2021年8月份)去旅游哇和家人一起来这个很火的清远古龙峡为了玩齐全里面的所有项目我们玩了两天一夜~真的玩疯了第一天行程早上自驾上午11点来到古龙峡,游客较少先安排漂流项目网红河谷打卡疯狂尖。