通过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源码相关推荐

  1. 调试JDK源码-ConcurrentHashMap实现原理

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  2. 调试JDK源码-一步一步看HashMap怎么Hash和扩容

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  3. 调试JDK源码-Hashtable实现原理以及线程安全的原因

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  4. 调试JDK源码-HashSet实现原理

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  5. 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

    最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...

  6. 跟踪调试JDK源码时遇到的问题及解决方法

    目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...

  7. CLion调试redis6源码

    背景 clion使用cmake来管理编译redis源码,而redis源码本身使用原生的make,因此直接将redis源码导入clion无法直接运行,需要配置cmake. 写c程序大体步骤为: 1).用 ...

  8. JDK源码重新编译——支持eclipse调试JDK源码--转载

    最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1:   ...

  9. clion开发php,如何在 Mac 上用 Clion 调试 php7 源码

    一.背景 据2019年7月份的编程排行榜,php 依然在前10,表明了 php 还是世界上最好的语言.php 的优势很多,只要场景合适,在工作中能用就用了.为了更好的理解这门语言,这几天学习下 php ...

最新文章

  1. 如何设置采购收货直接转到供应商库存?
  2. 织梦gbk转utf8(数据库篇)
  3. 大二上期计算机试题答案,2019年对口升学班上期期末计算机网络技术试卷及答案知识讲解.doc...
  4. VTK:绘图之ScatterPlot
  5. spring cloud gateway的stripPrefix配置
  6. 虚拟专题:联邦学习 | 面向隐私保护的非聚合式数据共享综述
  7. Windows 11 高门槛吓退用户,Linux 成香饽饽?
  8. 自适应网页设计(Responsive Web Design)响应式设计
  9. 夜上海音乐播放器 v 1.0
  10. VMware下虚拟系统上网与互ping
  11. P1262 间谍网络+Trajan 缩点(有向图)
  12. 编程吸金榜:你排第几?网友神回应了 !
  13. 上海千锋培训python
  14. 嵌入式Linux--U-Boot(四)MMC命令使用
  15. Chrome浏览器的crash问题
  16. 新浪微博Android客户端开发之OAuth认证篇
  17. 3w服务器把信息组织成为,网站前面的www是什么意思?
  18. 小白鼠与毒药解题过程分析
  19. 新视野大学英语第三版读写教程2答案
  20. android+usb模拟点击,Android后台模拟点击探索(附源码)

热门文章

  1. 踔厉奋发,笃行不怠,我的第一篇CSDN文章
  2. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
  3. 二分查找详解(Java)
  4. 资本频频下注,为什么是江小白?
  5. 复杂网络中重要节点挖掘方法综述
  6. 【20保研】南京邮电大学关于举办2019 年江苏省研究生“大数据时代下的新型网络计算” 暑期学校的通知...
  7. Unity中创建PDF的方法
  8. 记录一次nginx服务器签名证书过期的排查过程
  9. 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究
  10. 微信小程序:打开设置(权限)页面