openjdk8 JVM源码阅读==windows&centos Clion debug openJDK8

jvm调试环境 简单快速搭建 jvm调试环境 简单快速搭建 vscode docker 阅读详情

确保已经在centos中编译好了openjdk8

编译openjdk8==centos7.9编译openjdk8_一个java开发的博客-CSDN博客

确保使用的是slowdebug

 centos安装可视化界面

centos安装idea并放到桌面快捷方式

打开IDEA,新建一个java项目,并将项目使用的jdk设置为编译好的JDK即可

 以上就可以使用编译出来的JDK了。

==========================================

debug JDK源码

1-直接在centos上debug

编写测试类:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("6666666");
    }
}

将测试类拷贝到JDK的bin目录下

编译测试代码

./javac -g HelloWorld.java 

开始用gdb调试:

gdb java

set args HelloWorld testjdk

start开始debug

next查看下一行

step进入方法内部

list查看当前debug到了源码的哪一行,然后打开源码查看对应的地方即可

=======================================================

2-在windows上使用clion进行debug

Windows 如何远程调试openjdk 源码 gdbserver gdb 老鸟们会了吗https://baijiahao.baidu.com/s?id=1726254596484068751&wfr=spider&for=pc

cd /opt/jdk

zip -r openjdk openjdk
rz

将整个openjdk目录压缩后从centos下载到windows上后,解压,然后用clion直接open整个openjdk文件夹

 然后在centos编译得到的文件的bin目录下新建测试类Test.java

public class Test {

public static void main(String[] args) {

System.out.println(">>>>>>>>>>>>>>>>"+Thread.currentThread().getName());

}

}

然后编译

./javac -g Test.java
然后启动server,需要保证1234s端口是开放的

gdbserver :1234 java Test

然后在windos上用clion 的configuration新建一个remote debug,连接到centos暴露的端口进行远程debug,

tcp:192.168.136.101:1234

/opt/jdk/openjdk

E:\openjdk

 然后在clion里找到main.c,路径是在jdk/src/share/bin/main.c,然后打上断点

 找到java.c打上断点,jdk/src/share/bin/java.c

 然后clion开始debug,就会发现clion自动卡在了main.c之前定义的断点处。

 同时centos上等待的server发现了来自远程的连接

 现在就可以在clion进行后续的debug了。

整个Test.java的代码都debug完了之后,clion中的degug会自动退出。

同时centos中的server也自动结束了。

更改Test.java的代码后,重新编译,然后启动gdb server,然后clion重新开启debug即可。

====================================

从启动测试类一直到执行main方法的整个路径大致为

jdk/src/share/bin/main.c:125

jdk/src/share/bin/java.c:304

jdk/src/share/bin/java.c:2007

jdk/src/solaris/bin/java_md_solinux.c:1032

pthread_create_百度百科

pthread_join_百度百科

jdk/src/share/bin/java.c:376

jdk/src/share/bin/java.c:1214

JNI_CreateJavaVM::result

hotspot/src/share/vm/runtime/thread.cpp:3307

hotspot/src/share/vm/runtime/thread.cpp:3389

hotspot/src/share/vm/runtime/thread.cpp:3401

hotspot/src/share/vm/runtime/thread.cpp:988

hotspot/src/os/linux/vm/os_linux.cpp:978

create_attached_thread::thread

hotspot/src/share/vm/runtime/thread.cpp:1040

JavaCalls::call_special(&result, thread_oop,
                                 klass,
                                 vmSymbols::object_initializer_name(),
                                 vmSymbols::threadgroup_string_void_signature(),
                                 thread_group,
                                 string,
                                 CHECK_NULL);

内核层面的线程→c++层面线程→java层面的main线程

实现了java所谓的线程和操作系统线程的一一绑定。这就是java跨平台的由来。

 jdk/src/share/bin/java.c:477

JVM源码调试环境搭建 前言: 上篇文章我们介绍了如何在Ubuntu中编译openjdk,包括hotspotJVM,编译完之后大家就要开始阅读jvm源码了,为了让大家能够流畅地阅读和调试jvm源码,这篇介绍下如何搭建jvm源码调试环境,使之能够在IDE中调试。 1.笔者环境: 源码:openjdk11-hotspot IDE:clion 系统:Ubuntu19.04 2.搭建过程: 2.1将源码载入到clion 首先... 阅读详情

相关推荐

单细胞 | pySCENIC·转录因子分析(二)

接上一篇,pySCENIC分析完之后就可以进行可视化了,个人认为最重要的有三个图:rss点图,rank图,转录因子表达水平热图,3个图结合着看。3.可视化rank图,可以自己改一下plotRSS_oneSet参数让图更好看一点。4. regulon表达水平热图,转录因子表达水平同理,得到的图类似只是输入不一样。2.可视化点图:寻找cluster特异性转录因子。1.loom文件读入R,提取数据。

生信练习生 4273

openJDK源码下载及阅读

完全来源于:https://www.jianshu.com/p/6fe47f6a1b2a 1、打开openjdk网站 打开链接:http://hg.openjdk.java.net/ 2、点击想要下载的jdk的版本,如jdk8u 3、在新页面中找到jdk8u然后点击下面的jdk连接

yangyangrenren的专栏 3637

【TiktokAPI】Tiktok直播API与实时互动功能开发完全指南

Tiktok直播API允许开发者创建、管理直播,并实现各种互动功能。/*** 获取Tiktok直播API访问令牌* @param {string} client_id - 应用ID* @param {string} client_secret - 应用密钥* @param {string} code - 授权码* @param {string} redirect_uri - 重定向URI* @returns {Promise<object>} 访问令牌响应*/try {}),

Mageia的专栏 3157

JVM | 基于openJDK源码深度拆解Java虚拟机

本篇完毕,我们来回顾下:在Java中,一切皆为对象。所以我们从对象出发,探索对象的内存结构。通过其设计的结构关联到JVM虚拟机的其它组件。一步步的解构这个JVM系统,最终掌握完整的JVM虚拟机。

StudyBrainEx 1733

DFT与机器学习协同设计高效光催化剂:从电子结构到性能预测

密度泛函理论(DFT)作为计算材料学的基石,通过求解Kohn-Sham方程,能够在原子尺度精确预测材料的电子结构、能带和光学性质,为理解光催化等能源材料的微观机理提供了关键视角。其核心价值在于替代传统试错法,实现材料性能的理性设计与机理揭示。在工程实践中,面对高通量筛选的需求,机器学习(ML)技术,特别是长短期记忆网络(LSTM)这类擅长处理序列数据的模型,能够学习从材料描述符到复杂性能(如光谱)的映射关系,实现快速性能预测与优化。这种DFT与ML的结合范式,正广泛应用于新能源材料、半导体器件等领域,用于高

weixin_30662937的博客 655

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 973

如何下载OpenJDK及其源码

然后在 IDEA 中选择解压后的 JDK 源码,位置在 File->Project Structure->SDKs->Sourcepath,并移除压缩包的路径,便能在 IDEA 中直接编辑 JDK 的源码。下载,这里存放了 JDK 长期支持版本,包括 6,7,8,11,17 和 21,还能下载小版本号的 JDK。最简单的办法就是在 JDK 压缩包内找到名为 src.zip 的压缩包,这个压缩包就是 JDK 的源码。,这里能下载 JDK9 及其以上的版本,还有 JDK 源码所在的 github 地址。

weixin_54227075的博客 8236

【实战指南】OpenClaw Telegram 群聊不响应完整解决方案:从获取群 ID 到关闭隐私模式全流程

将整个从“获取群组 ID → 配置 OpenClaw Telegram 通道 → 关闭隐私模式 → 测试”的全流程都整合进去。

hampeter的博客 3458

openjdk源码获取

学习jdk源代码

weixin_38552343的博客 735

8、干式变压器

干式变压器的发展,是人类不断挑战材料科学和热物理极限的过程,每一次技术突破,都是在。温度升高,ε_r反而下降(因为分子活动性增强,极化响应变慢)。:固体导热的热阻比液体对流大一个数量级,这是无法逾越的物理规律。Nomex在高温下不是逐渐分解,而是保持性能直到一个临界点。如果 T_a = 40°C,则 T_c = 146.7°C。干式变压器(固体介质分隔):热场、电场、流场(空气)形成三维氢键网络,即使在高温下也能保持机械强度。:不是在现有技术上修修补补,而是寻找新的。仍在H级绝缘允许范围内(≤180°C)

renpeng2692873032的博客 223

GameFramework框架详解之 Network网络框架

NetworkManager只负责维护NetworkChannel,实际的有种我们简历网络连接的也是NetworkChannel作为一个网路频道,这样管理起来比较方便,比如:一个游戏可能有多个网络连接,那么我们建立多个网络频道即可,或者当我们一个网络频道断线后,我们可以直接再新建一个,防止数据混乱。/// /// 网络管理器。/// /// 网络频道。/// 用户自定义网络错误事件。/// 检查是否存在网络频道。/// 获取网络频道。/// 获取所有网络频道。

TxNet 3356

OpenJDK源码阅读-Oop&Klass

文章目录oop-klassOBJECT hierarchymetadata hierarchyklass hierarchyoopclassDiagramdescriptionklassclassDiagramcription oop-klass 当C,C++和Delphi等程序被编译成二进制程序后,原来所定义的高级数据结构都不复存在了,当windows/linux等操作系统(宿主机)加载这些二进制程序时,是不会加载这些语言中所定义的高级数据结构的,宿主机压根就不知道原来定了那些数据结构,哪些类,所有的数

Qbit编程学习笔记 1147

加速访问Cloudflare的网站的解决方案

本文主要介绍了加速访问Cloudflare的网站的解决方案,希望能对大家有所帮助。通过软件计算得到最快的IP地址的效果图如下图所示,具体解决方案参考下文。 在这里插入图片描述 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

java导入jdk源文件_Clion导入OpenJDK8源码阅读(支持函数跳转)

本文环境基于Ubuntu 20.04一、准备工作1.1 下载OpenJDK8源代码本人是通过AdoptJDK的github仓库下载的,AdoptJDK基本可以理解为OpenJDK,因为OpenJDK的仓库太难找了,下这个是一样的。1.2 安装JDK7JDK的编译需要用到上一个版本的JDK,我们这里要编译JDK8的话就需要安装JDK7。这里你可以选择用Oracle提供的JDK7安装包,或者从gith...

weixin_36366239的博客 875

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

通过IntelliJ IDEA单步调试JDK源码

通过IntelliJ IDEA单步调试JDK源码

qq_25825005的博客 1302

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HotSpot8源码-类加载器的实现

JVM进行LoadClass的类加载器分三种:BootStrapClassLoader,ExtClassLoader,AppClassLoader。在不同的场景下使用相应的ClassLoader将.class字节码文件转换成JavaClass类对象,转换源码如下所示:Klass对象为C++实现的对象,在JVM读取转化.class类文件中的数据后得到的结构体,即.class类文件的元数据对象。

killbibi的博客 608

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

openjdk源码了解

而且也断点不到oom需要打印的函数,估计不是搜到的退出函数了。libjvm.so 明明有编译信息,却没有符号。4、执行java的main函数。关键执行class字节码步骤。1、加载MainClass。3、获取MainID和入参。执行java的C++代码。2、获取appClass。java调试用例源码。

u012557298的专栏 824

JVM_08 执行引擎(Execution Engine)

执行引擎概述 执行引擎是Java虚拟机的核心组成部分之一 虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。 JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM锁识别的字节码

lucylala007的博客 404

深入JVM源码篇-1-如何查看JVM源码

有木有这样的苦恼,看了jdk源码,还是不清楚底层如何实现的。那么咱们一起进入JVM源码,一探究竟吧。

陈海龙的格物之路 4893

Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)

一、准备环境 1.1、服务器资源 操作系统:CentOS 6.8 x64 操作软件:CLion (JetBrains的产品) 二、下载源码(OpenJDK8) yum 源使用的是阿里的 https://opsx.alibaba.com/mirrorlang=zh-CN 这里使用 mercurial(类似 Git 的版本控制系统) 下载源码,方便更新。 安装hg服务 yum install mercurial -y 使用hg下载jdk8u源码到/opt目录 hg clone http://h

m0_67393342的博客 2236

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

一、JVM 内存模型   根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。   1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出StackOverflowError的错误,不过这个深度范围不是一个恒定的值,我们通过下面这段程序可以测试一下

好好学java 2290

高效阅读JDK源码,保姆级JDK源码笔记真香

作为一名java的开发者,需要对JDK源码有一定的了解和学习,同时也是个人能力的体现,也是在面试中给自己的加分项目。因此个人总结学习JDK源码的相关知识的方法和JDK源码服务图。JDK 中的代码非常多,作为是初学者需要阅读一下基本的源码,参考互联网上各种意见,个人认为阅读JDK源码需要具备一下几点:熟悉了解JDK的使用 熟悉openJDK的编译 了解常见软件设计模式一,JDK源码是其它所有源码的基础,看懂了JDK源码再看其它的源码会达到事半功倍的效果。二,JDK源码中包含大量的数据结构知识,是学习数据结构很

老男孩的架构路 1339

在线查看OpenJdk 源码

如果想看 以前的jdk版本的原代码可以在这里看 比如 jdk1.6 jdk1.7

weixin_42286658的博客 494

简单几步!Windows下Clion结合docker调试openjdk8源码

废话不多说,开干! 原理是通过Docker编译openjdk,然后结合clion通过gdbserver远程调试 环境需求 Clion Docker 我测试的版本 Docker for windows : Docker version 20.10.2, build 2291f61 Clion : 2020.3.1 构建镜像 git clone https://e.coding.net/javalistcn/openjdk/build-openjdk-8.git cd build-op

qwe123147369的博客 1467

JDK8源码阅读-WINDOWS下环境搭建

引言   之前在阅读JDK源码时,我们通常都是直接打开的引入JDK包下的类进行学习的,可是这里面的类文件我们是无法做修改,没有办法直接写我们自己的注释到上面,笔记记录非常麻烦。因此我们可以搭建自己的源码环境,在后续阅读过程中可以直接对类文件做修改,也方便我们回顾和复习。 搭建环境 一.解压源码压缩包   首先找到我们JDK的安装目录,本人当初安装JDK时候使用的安装版并且装在了默认路径下。所以我的安装目录在 C:\Program Files\Java\jdk1.8.0_181   解压之前,我们先在IDEA

q13145241q的博客 1566

JDK源码调试程序搭建

前言 调试环境:操作系统macOS10.15.4、jdk1.8、idea2020.1 搭建过程 找到电脑上安装JDK的位置 每个人安装JDK的位置不一样。安装JDK的时候已经自带了JDK源码压缩文件,无需再去网上下载(注:这是我的JDK安装位置,需找的自己JDK的安装目录)。 /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home 通过IDEA创建一个项目 直接下一步就行,不需要勾选任何环境。 1) 选择创建命令行项目

一只谢哈哈 374
上一篇: 编译openjdk8==centos7.9编译openjdk8
下一篇: C语言学习1==gcc 创建动态库
一个java开发
博客等级 码龄9年 2561粉丝 213原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值