为什么要自己调试
在前面的文章,已经介绍了如何编译自己的OpenJDK。
但是光拥有了自己的JDK版本肯定是不够的。
为了深入了解Java实例的创建、初始化和执行流程以及内部实现原理,DEBUG是必不可少的必杀技。
所以,作为搞技术的有必要学习如何调试JVM源码。
一、搭建前准备
我这里针对的是我自己的环境,您可以根据你自己的环境,去搭建,道理都是一样的。
- OS:Mac系统
- IDE:Clion。下载地址
- 代码:OpenJDK10
首先你得安装一个Clion,因为HotSpot虚拟机是C++写的。
二、验证Clion是否正确安装
你需要建一个新的小Demo,看看Clion是否能用。
你只需要新建一个项目。
Clion就会自动给你生成一个HelloWorld的项目。
如果运行能够正常输出,那么Clion就Ok,如果不能,你就自己调一调。
三、导入项目
注意:你这里一定是要导入src下面的hotspot文件夹。千万不要把src导入进去了,否则你在配置
run configuration
的时候,会发现target找不到。
File > Import Project
- 一定要导入
/Users/wangdong/Develop/OpenJdk/openjdk/src/hotspot
导入成功后,是这样的效果
虽然有些许报错,但是不影响使用。
四、编辑配置
如下图编辑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,否则会报错无法调试
五、调试源码
在hotspot/share/runtime/thread.cpp
文件的Threads::create_vm
方法内部打断点
好啦,到这里就可以调试环境就搭建好了。
后续,我们会一起来Debug,在最新的Jdk10的世界探索。