通过CLion 调试JDK源码
通过CLion 调试JDK源码
0. 简述
0.1 使用环境:
宿主机操作系统:Windows 10 专业版
虚拟机软件:VMware® Workstation 16 Pro
虚拟机操作系统:[ubuntu-22.04.1-desktop-amd64.iso](
CLion:2022.2.3
0.2 前言
按照<深入理解Java虚拟机>书中描述,在Clion中调试JDK12源码需要CMakeLists.txt文件,但是目前里面已经没有了jdk12所需的文件。
而Jetbrains官方其实也提供了使用CLion调试JDK源码的解决方案,就是使用Compilation Database
, 详细内容可以参考https://hg.openjdk.java.net/jdk/jdk/raw-file/tip/doc/ide.html 和 https://blog.jetbrains.com/clion/2020/03/openjdk-with-clion/
在上一篇<Ubuntu22环境下编译OpenJDK12源码>的基础上,进行下面的操作,就可以实现在CLion中调试JDK源码。
1. 生成compile_commands.json文件
cd /home/gx/sourcecode/jdk # 进入jdk源码根目录
make compile-commands
2. 通过compile_commands.json文件导入源码
在执行命令make compile-commands
之后就可以在build/linux-x86_64-server-fastdebug目录下看到新生成的compile_commands.json
文件,通过Clion打开该文件,在弹出框中选择作为项目(as a project)。
3 切换Root目录
但是此时Clion的目录是linux-x86_64-server-fastdebug,需要切换到源码根目录,Tools–>Compilation Database->Change Project Root
4 自定义构建对象
如图:
5 设置运行配置
如图:
6 调试测试
在JDK源码的java.c源文件中,找到JavaMain主方法,如下图打上断点:
然后在Clion右上角上图位置,点击debug按钮,开始进行调试,如果一切正常,程序会停在断点处。这样就实现了JDK源码的调试!
通过CLion 调试JDK源码相关推荐
- 调试JDK源码-ConcurrentHashMap实现原理
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-Hashtable实现原理以及线程安全的原因
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-HashSet实现原理
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值
最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...
- 跟踪调试JDK源码时遇到的问题及解决方法
目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...
- CLion调试redis6源码
背景 clion使用cmake来管理编译redis源码,而redis源码本身使用原生的make,因此直接将redis源码导入clion无法直接运行,需要配置cmake. 写c程序大体步骤为: 1).用 ...
- JDK源码重新编译——支持eclipse调试JDK源码--转载
最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1: ...
- clion开发php,如何在 Mac 上用 Clion 调试 php7 源码
一.背景 据2019年7月份的编程排行榜,php 依然在前10,表明了 php 还是世界上最好的语言.php 的优势很多,只要场景合适,在工作中能用就用了.为了更好的理解这门语言,这几天学习下 php ...
最新文章
- 如何设置采购收货直接转到供应商库存?
- 织梦gbk转utf8(数据库篇)
- 大二上期计算机试题答案,2019年对口升学班上期期末计算机网络技术试卷及答案知识讲解.doc...
- VTK:绘图之ScatterPlot
- spring cloud gateway的stripPrefix配置
- 虚拟专题:联邦学习 | 面向隐私保护的非聚合式数据共享综述
- Windows 11 高门槛吓退用户,Linux 成香饽饽?
- 自适应网页设计(Responsive Web Design)响应式设计
- 夜上海音乐播放器 v 1.0
- VMware下虚拟系统上网与互ping
- P1262 间谍网络+Trajan 缩点(有向图)
- 编程吸金榜:你排第几?网友神回应了 !
- 上海千锋培训python
- 嵌入式Linux--U-Boot(四)MMC命令使用
- Chrome浏览器的crash问题
- 新浪微博Android客户端开发之OAuth认证篇
- 3w服务器把信息组织成为,网站前面的www是什么意思?
- 小白鼠与毒药解题过程分析
- 新视野大学英语第三版读写教程2答案
- android+usb模拟点击,Android后台模拟点击探索(附源码)
热门文章
- 踔厉奋发,笃行不怠,我的第一篇CSDN文章
- 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
- 二分查找详解(Java)
- 资本频频下注,为什么是江小白?
- 复杂网络中重要节点挖掘方法综述
- 【20保研】南京邮电大学关于举办2019 年江苏省研究生“大数据时代下的新型网络计算” 暑期学校的通知...
- Unity中创建PDF的方法
- 记录一次nginx服务器签名证书过期的排查过程
- 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究
- 微信小程序:打开设置(权限)页面