快捷搜索:  汽车  科技

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)编译的jdk:jdk8boot jdk:jdk7说下我的编译环境我编译用到的所有镜像、软件都可以分享给大家,需要的同学关注【启明南】公众号后回复:单步调试JVM,建议大家与我的环境保持一致,这样你遇到的问题我才方便给你解答操作系统:Ubuntu16

其实当初选择成为一个“人人敬仰”的程序猿,我相信大多数人都有一个梦:大神。选择说明热爱,有梦想说明有寄托。但是很多人走着走着就不见了踪影,梦为何破碎得如此之快。一个梦不坚持,就会有无数的梦,只不过真的只是梦。选择了,就只有一个目标,达到自己能达到的极限。OK?抛开恐惧,架起环境,探索jvm底层的秘密。

如果整个Java考卷是100分,最后的30分都跟JVM底层相关。Java自诞生至今已有20余年,企业为了筛人、个人为了增强竞争力,都在向底层靠近,研究得越来越深。所以现在的问题不是要不要学、学不学的懂,而是要学到什么程度的问题。三期开班将近,鉴于很多同学面对JVM源码束手无策,我整理了编译openjdk源码 单步调试的教程,希望能帮助同学们在研究JVM底层的道路上打开一扇窗。

我一直有一个观点:Java是短暂的,JVM是永恒的。现在很多语言都不开发运行环境了,都选择在JRE上运行,足以证明JVM的优越。可以说,你精通了JVM,未来的路才可能走得轻松。空闲之余,JVM值得每个人去深入研究,这份付出,一定会迎来意想不到的回报。

前言

说下我的编译环境

我编译用到的所有镜像、软件都可以分享给大家,需要的同学关注【启明南】公众号后回复:单步调试JVM,建议大家与我的环境保持一致,这样你遇到的问题我才方便给你解答

操作系统:Ubuntu16

boot jdk:jdk7

编译的jdk:jdk8

看源码工具:Clion、NetBeans

编译

1、安装依赖

sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache

2、boot jdk

因为openjdk源码中有些功能是用Java代码实现的,比如调试工具:jps、jstat等,还有一些核心jar包,如rt.jar、tools.jar等,都需要相应版本的JDK。boot jdk需要比你编译的jdk版本低,我只测试了低一个版本,低多个版本有没有问题,喜欢探索的同学可自行测试。

直接解压到Documents目录下,然后配置下环境

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(1)

3、配置openjdk

默认情况下configure不是可执行文件,执行命令

chmod u x configure

执行配置命令

sudo ./configure --with-target-bits=64 --with-boot-jdk=/home/ziya/Documents/jdk1.7.0_80 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0

看到这个画面就证明配置成功了,就可以编译了。如果不是,就得一步步把问题解决了再重新配置

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(2)

4、编译

sudo make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0

看到下面这个画面就证明编译成功,就可以用了

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(3)

5、验证

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(4)

单步调试

我一般是clion NetBeans lldb结合起来用

1、clion

这个IDE不支持Makefile,仅支持cmake,比较麻烦。这里大家也不用花时间去学习cmake了,我会把我写好的cmakefile分享给大家(有好几种写法,我分享最简单的一种)。来看下单步调试效果

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(5)

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(6)

调试过程中会出现段错误导致程序终止,加上这句话忽略SIGSEGV信号

process handle --pass true --stop false SIGSEGV

时机:在发生段错误之前都行,我一般是进入了调试程序就马上加上。目录下加.gdbinit文件也行

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(7)

2、NetBeans8.2

这个IDE支持Makefile,但是高版本就不支持了,所以只能用8.2版本

注意是新建项目,它会根据Makefile将项目构建好。后面就是一直下一步、下一步……

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(8)

项目构建好后,点击【定制】配置调试环境

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(9)

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(10)

-cp即classpath,后面是要运行的class文件,这样调试环境就搭建完成。

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(11)

GDB与LLDB

这两个都是命令行调试程序,gdb是老牌的,lldb是轻量级的,输出更友好。lldb是xcode内置的调试器。

结语

至此,编译openjdk及单步调试环境就搭建好了。虽然我的教程已经写得很详尽,但第一次搭建可能还是会遇到一些坑,一些比较难解决的坑我已经在文章中给出解决方案,其他的坑我相信同学们都能自行解决。

环境搭建好离真正的精通JVM还有很长很长很长的距离,openjdk可不是那么好学的。这边对jvm感兴趣的同学可以来听我讲课,在腾讯课堂搜索鲁班学院,即可跟我一起学习

广告

揭秘Java虚拟机:垃圾收集器和算法以及JVM面试题

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(12)

openjdk源码学习(阿里大牛手把手教你搭建单步调试openjdk环境)(13)

如需要这些资料的同学可以关注我,后台私信【jvm】即可免费获取

如果你想深入学习JVM而又倍感压力,希望能更高效更透彻,我在鲁班学院等你。

意犹未尽,还想看子牙老师后续的文章?那就关注一波吧。

猜您喜欢: