通过IntelliJ IDEA单步调试JDK

0 使用环境:

宿主机操作系统:Windows 10 专业版

虚拟机软件:VMware® Workstation 16 Pro

虚拟机操作系统:ubuntu-22.04.1-desktop-amd64.iso

IntelliJ IDEA:2020.1.4

1 创建一个Java项目

2. 设置项目JDK环境

2.1 新增JDK

这里要选择我们自己编译后的JDK版本:jdk/build/linux-x86_64-server-fastdebug/images/jdk

2.2 修改源文件路径

在右上角有一个Project Structure入口,点击进入之后,找到SDKs位置,将Sourcepath全部清除(如果有数据),然后导入openjdk的源码文件中的src目录

3. 开始Debug

配置完成上面的步骤,就可以开始调试JDK的源码了,在工程下面新建一个Java类,如下:

public class Demo {public static void main(String[] args) {System.out.println("Hello World!");}
}

通过println方法跟踪进去,可以看到如下代码:

/*** Prints a String and then terminate the line.  This method behaves as* though it invokes {@link #print(String)} and then* {@link #println()}.** @param x  The {@code String} to be printed.*/public void println(String x) {synchronized (this) {print(x);newLine();}}

我们试着修改一下PrintStream类的println方法

/*** Prints a String and then terminate the line.  This method behaves as* though it invokes {@link #print(String)} and then* {@link #println()}.** @param x  The {@code String} to be printed.*/public void println(String x) {synchronized (this) {print("have a try ============");newLine();print(x);newLine();print("have a try try ============");}}

此时执行该main方法,会发现我们新添加的代码并没有出现在控制台中,这是因为修改JDK源码后并没有重新编译。只有重新编译后,才会使最新的代码生效。

进入到openjdk12源码根目录,重新编译make images,然后回到IntelliJ IDEA中继续运行该Demo的main方法,发现我们新添加的代码已经生效。

have a try ============
Hello World!
have a try try ============

通过IntelliJ IDEA单步调试JDK源码相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 通过CLion 调试JDK源码

    通过CLion 调试JDK源码 0. 简述 0.1 使用环境: 宿主机操作系统:Windows 10 专业版 虚拟机软件:VMware® Workstation 16 Pro 虚拟机操作系统:[ubu ...

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

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

  9. Eclipse中关联并调试JDK源码

    eclipse关联JDK源码的一般步骤: 1.依次选择Window -> Preferences: 2.依次选择Java -> Installed JREs -> Jre- -> ...

最新文章

  1. go语言培训班多少钱
  2. javaweb web.xml文件详解
  3. python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)
  4. 如何开启SAP CRM基于WORD模板创建附件的功能
  5. ai对话机器人实现方案_显然地引入了AI —无代码机器学习解决方案
  6. 解决:Connect to xx.xx.xxx.xx :8081 [/xx.xx.xx.xx] failed: Connection refu sed: connect -> [H
  7. uber-zap_如何构建自己的Uber-for-X应用程序(PART 2)
  8. 入门机器学习(十三)--支持向量机(SVM)
  9. SQL Server Denali:SSDT新功能解读
  10. 第一个go程序: HTTP 服务示例
  11. python写背单词软件_python实现屏保程序(适用于背单词)
  12. VC编程-预编译头文件(precompiled header)
  13. Java异常处理机制(基础知识)
  14. Xpose安装 xposed下载出错 http://dl.xposed.info/repo
  15. Arduino开发教程
  16. left join-on-and 与 left join-on-where
  17. 2023电工杯数学建模竞赛B题思路解析+代码+论文
  18. css选择器 ~ (波浪号)、+(加号)、>(大于号)的用法解析和举例
  19. 工作量证明 - 如何证明你的工作很卖力
  20. apple公司的潮起潮落——浪潮之巅

热门文章

  1. 湖北大学计算机基础多少学分,2020年湖北自考本科要考多少门课程?
  2. 为什么从此电脑访问不了ftp_电脑打开FTP文件夹出错提示Windows无法访问的解决方法...
  3. 微信小程序云开发入门教程-服务开通
  4. 数字化转型,究竟在“转”什么?
  5. 信号与系统常见问题总结(1)
  6. Nuxt.js 服务端渲染从安装到部署
  7. blr不是已知的css属性名,css笔记
  8. 【计算机网络】时延带宽积的理解(图解易懂)
  9. bWAPP——CSRF
  10. vue项目实战--如何在手机中查看vuecli3/vuecli2项目?