Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境

为什么要自己调试

在前面的文章,已经介绍了如何编译自己的OpenJDK。
但是光拥有了自己的JDK版本肯定是不够的。
为了深入了解Java实例的创建、初始化和执行流程以及内部实现原理,DEBUG是必不可少的必杀技。
所以,作为搞技术的有必要学习如何调试JVM源码。


一、搭建前准备

我这里针对的是我自己的环境,您可以根据你自己的环境,去搭建,道理都是一样的。

  • OS:Mac系统
  • IDE:Clion。下载地址
  • 代码:OpenJDK10

首先你得安装一个Clion,因为HotSpot虚拟机是C++写的。

二、验证Clion是否正确安装

你需要建一个新的小Demo,看看Clion是否能用。

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第1张图片

你只需要新建一个项目。

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第2张图片

Clion就会自动给你生成一个HelloWorld的项目。
如果运行能够正常输出,那么Clion就Ok,如果不能,你就自己调一调。
Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第3张图片

三、导入项目

注意:你这里一定是要导入src下面的hotspot文件夹。千万不要把src导入进去了,否则你在配置run configuration的时候,会发现target找不到。

  • File > Import Project
  • 一定要导入/Users/wangdong/Develop/OpenJdk/openjdk/src/hotspot

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第4张图片

导入成功后,是这样的效果
虽然有些许报错,但是不影响使用。

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第5张图片

四、编辑配置

如下图编辑DEBUG配置信息
1. Executable 选择之前build出的镜像里的java可执行文件(i.e. build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java)
2. Program arguments填写-version,输出Java版本
3. Before launch 注意:这里一定要移除Build,否则会报错无法调试

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第6张图片

五、调试源码

hotspot/share/runtime/thread.cpp文件的Threads::create_vm方法内部打断点

Java虚拟机(JVM源码):搭建OpenJDK(10)源码调试环境_第7张图片

好啦,到这里就可以调试环境就搭建好了。
后续,我们会一起来Debug,在最新的Jdk10的世界探索。

你可能感兴趣的:(Java虚拟机(Jvm))