最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenJDK源碼調(diào)試圖文教程

 更新時(shí)間:2021年04月13日 10:36:49   作者:Lucky Monkey  
這篇文章主要介紹了OpenJDK源碼調(diào)試,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

     隨著Java生態(tài)愈發(fā)龐大,各種各樣的新技術(shù)層出不窮,這也給大家的學(xué)習(xí)帶來(lái)了很多困惑,這么多技術(shù)我該學(xué)什么,盲目的在各種新技術(shù)間穿梭,并不能取得很好的效果。
     作為Java核心技術(shù)的JDK相信很多同學(xué)都看過(guò)源碼,了解過(guò)Java的內(nèi)存模型,但是很多時(shí)候debug到最后都是 native,這是讓人很沮喪的事情,于是乎了解JDK底層的實(shí)現(xiàn)變得極為重要。
    編譯OpenJDK源碼的文章很多,但是很少有從頭到尾搭建環(huán)境的文章,于是我這里就寫了這篇文章,這里涉及的主要步驟:

虛擬機(jī)的安裝

  • 虛擬機(jī)的安裝
  • Ubuntu系統(tǒng)鏡像安裝
  • Ubuntu系統(tǒng)設(shè)置
  • OpenJDK編譯
  • Idea在Linux下的安裝
  • netbeans在Linux下的安裝
  • HotSpot源碼調(diào)試

WMware虛擬機(jī)安裝

WMware的版本有很多我們這里使用的版本是15.5.1的版本。
下載鏈接
鏈接: https://pan.baidu.com/s/1IABotf1mFjFMZqXE8yZ1BA 提取碼: atzw

下載軟件后,放到指定目錄下,雙擊打開(kāi),點(diǎn)擊下一步,如下圖所示:

啟動(dòng)安裝

勾選我接受的復(fù)選框,點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

選擇待安裝vm的磁盤位置,可以自定義,選擇磁盤位置后,點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

去勾選更新和加入體驗(yàn)的復(fù)選框,點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

點(diǎn)擊下一步后彈出安裝進(jìn)度,等待安裝結(jié)束,如下圖所示:

在這里插入圖片描述

到此為止我們就安裝成功了,在桌面上找到圖標(biāo)打開(kāi)即可以使用了,如下圖所示:

在這里插入圖片描述

Ubuntu系統(tǒng)鏡像安裝

這里用來(lái)安裝虛擬的Ubuntu的版本是16.04.6這個(gè)版本
下載鏈接
鏈接: https://pan.baidu.com/s/1X82lDWqBO7HcBD_likFtPQ 提取碼: i4y4

打開(kāi)VMware虛擬機(jī)軟件,如下圖所示:

在這里插入圖片描述

選擇新建虛擬機(jī),如下圖所示:

在這里插入圖片描述

創(chuàng)建虛擬機(jī),選擇典型,然后下一步,如下圖所示:

在這里插入圖片描述

選擇已下載的ubuntu-16.04.6-desktop-amd64.iso鏡像,然后點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

填寫創(chuàng)建Ubuntu虛擬機(jī)所需要的的基本信息,然后點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

填寫虛擬機(jī)名稱和安裝位置,這里建議在較大的盤中創(chuàng)建一個(gè)單獨(dú)的目錄進(jìn)行存儲(chǔ),然后點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

指定磁盤大小和磁盤文件存儲(chǔ)形態(tài),如果只是用來(lái)進(jìn)行簡(jiǎn)單的調(diào)試代碼默認(rèn)的20G足夠了,如果后面不夠可以在虛擬機(jī)設(shè)置中對(duì)其進(jìn)行調(diào)整,這里我們就設(shè)置默認(rèn)的20G,磁盤存儲(chǔ)有兩種形式單文件和多文件,多文件格式對(duì)于備份異?;謴?fù)更好,這里我們選擇多文件存儲(chǔ),然后點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

由于后面在編譯OpenJDK時(shí)對(duì)內(nèi)存要求較高,這里在自定義硬件中我們將內(nèi)存調(diào)整到4G,然后點(diǎn)擊完成,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

等待Ubuntu安裝成功,這個(gè)過(guò)程大概需要十幾分鐘,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

Ubuntu系統(tǒng)設(shè)置

網(wǎng)絡(luò)設(shè)置

輸入密碼,登錄操作系統(tǒng),如下圖所示:

在這里插入圖片描述

Ubuntu網(wǎng)絡(luò)設(shè)置,使用快捷鍵(Ctrl+Alt+T)打開(kāi)命令行窗口,輸入ifconfig,查看當(dāng)前網(wǎng)絡(luò)配置,如下圖所示:

在這里插入圖片描述

輸入route -n,查看網(wǎng)關(guān)配置,如下圖所示:

在這里插入圖片描述

查看當(dāng)前Windows系統(tǒng)的DNS配置,作者使用的是Windows10,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述

設(shè)置Ubuntu的網(wǎng)絡(luò)配置,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

測(cè)試使用Ubuntu自帶的火狐瀏覽器是否可以正常訪問(wèn)百度,如下圖所示:

在這里插入圖片描述

共享文件夾設(shè)置

虛擬機(jī)Ubuntu和Windows進(jìn)行文件共享,很多資料使用的都是虛擬機(jī)自帶的工具VMware Tools,但是很多時(shí)候操作過(guò)程中會(huì)出現(xiàn)很多意想不到的問(wèn)題造成安裝失敗,浪費(fèi)很多時(shí)間,這里介紹一種更簡(jiǎn)單的方式,通過(guò)網(wǎng)絡(luò)共享實(shí)現(xiàn)虛擬機(jī)文件共享。
方法如下:

在Downloads目錄下創(chuàng)建一個(gè)share文件夾,效果如圖所示:

在這里插入圖片描述

在share文件夾上右鍵,選擇本地網(wǎng)絡(luò)共享,效果如圖所示:

在這里插入圖片描述

按下圖勾選選項(xiàng),然后點(diǎn)擊創(chuàng)建共享按鈕,效果如圖所示:

在這里插入圖片描述
在這里插入圖片描述

在windows系統(tǒng)中通過(guò)網(wǎng)絡(luò)找到share共享目錄,效果如圖所示:

在這里插入圖片描述

OpenJDK編譯

在編譯OpenJDK過(guò)程中,需要用到的軟件如下:

jdk-7u80-linux-x64.tar
下載地址:

鏈接: https://pan.baidu.com/s/1LNd2Xkg93bsXDuEVFdjfQQ 提取碼: j3ix

openjdk-8u40-src-b25-10_feb_2015.zip

下載地址:
鏈接: https://pan.baidu.com/s/1eFVhrgmXOZ_oD8uQ_YEiUg 提取碼: kqkh

編譯流程

將需要的安裝包放到虛擬機(jī)share共享目錄,如下圖所示:

在這里插入圖片描述

在Ubuntu虛擬機(jī)中解壓安裝包到Documents目錄,如下圖所示:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

安裝依賴包(按照提示進(jìn)行操作),大概需要2分鐘

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

安裝vim

sudo apt-get install vim

配置path

vim ~/.bashrc

在bashrc文件的末尾添加下面代碼,其中jdk1.7.0_80路徑根據(jù)實(shí)際情況填寫

export JAVA_HOME=/home/feng/Documents/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

驗(yàn)證是否配置成功

source ~/.bashrc
java -version

在這里插入圖片描述

執(zhí)行命令編譯OpenJDK8,boot jdk按照實(shí)際目錄填寫

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

如果配置成功會(huì)顯示如下信息:

在這里插入圖片描述

執(zhí)行下面的命令,開(kāi)始編譯,這個(gè)時(shí)間較長(zhǎng)

sudo make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0

看到下面的畫面,證明編譯成功

在這里插入圖片描述

Ubuntu下安裝Idea

我們這里使用的Idea2021.1的社區(qū)版。
下載鏈接
鏈接: https://pan.baidu.com/s/1w8eqjpWHn6J0DYX9TAwQmQ 提取碼: ygci

將下載的idea,放到share共享目錄下,并在虛擬機(jī)中解壓到Documents目錄,截圖如下:

在這里插入圖片描述

在當(dāng)前用戶目錄下創(chuàng)建Makefile文件

cd ~
vim Makefile

在文件中添加以下代碼:

idea:
	sh /home/feng/Documents/idea-IC-211.6693.111/bin/idea.sh

通過(guò)make命令啟動(dòng)idea

make idea

啟動(dòng)后,點(diǎn)擊繼續(xù),截圖如下:

在這里插入圖片描述

選擇不發(fā)送,截圖如下:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

Ubuntu下安裝NetBeans

我們這里使用的NetBeans8.2的版本。
下載鏈接
鏈接: https://pan.baidu.com/s/1k40ZgtSx87rUvLaabazeDA 提取碼: 34u9

將下載的NetBeans,放到share共享目錄下,并在虛擬機(jī)中復(fù)制到桌面,截圖如下:

在這里插入圖片描述

執(zhí)行以下命令,安裝NetBeans

cd /home/feng/Desktop/
sudo chown feng:feng jdk-8u111-nb-8_2-linux-x64.sh
./jdk-8u111-nb-8_2-linux-x64.sh

點(diǎn)擊下一步,安裝NetBeans,如下圖所示:

在這里插入圖片描述

設(shè)置默認(rèn)jdk,點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

選擇初始化目錄,點(diǎn)擊下一步,如下圖所示:

在這里插入圖片描述

去勾選檢查更新,點(diǎn)擊安裝,如下圖所示:

在這里插入圖片描述

去勾選,點(diǎn)擊完成,如下圖所示:

在這里插入圖片描述

點(diǎn)擊桌面的NetBeans ISE 8,2啟動(dòng),如下圖所示

在這里插入圖片描述

安裝C/C++插件,如下圖所示

在這里插入圖片描述

選擇可用插件,找到C/C++選中,點(diǎn)擊安裝,如下圖所示

在這里插入圖片描述

點(diǎn)擊下一步,安裝C/C++插件,如下圖所示

在這里插入圖片描述

勾選同意,點(diǎn)擊安裝,如下圖所示

在這里插入圖片描述

HotSpot源碼調(diào)試

執(zhí)行下面命令,修改javahome,使用編譯好的OpenJDK作為默認(rèn)JDK

vim ~/.bashrc

修改bashrc文件,修改后效果如下圖:

export JAVA_HOME=/home/feng/Documents/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk

在這里插入圖片描述

執(zhí)行java -version命令,檢查是否修改成功,如果成功,效果如下

source ~/.bashrc
java -version

在這里插入圖片描述

使用NetBeans創(chuàng)建OpenJDK工程,步驟如下:

在這里插入圖片描述

基于現(xiàn)有的C/C++代碼創(chuàng)建工程,選擇如下圖,點(diǎn)擊下一步

在這里插入圖片描述

選擇編譯后的OpenJDK的目錄,選擇定制,選擇如下圖,點(diǎn)擊下一步

在這里插入圖片描述

按照默認(rèn)配置,點(diǎn)擊下一步,最終點(diǎn)擊完成

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

使用Idea,創(chuàng)建一個(gè)工程,編寫一個(gè)測(cè)下代碼,工程結(jié)構(gòu),如下圖

package com.feng;

public class Test {
    public static void main(String[] args) {
        String str = "test";
        System.out.println(str);
    }
}

在這里插入圖片描述

運(yùn)行代碼進(jìn)行編譯,將class文件生存到class目錄下,如下圖

在這里插入圖片描述

NetBeans中配置Test活動(dòng),步驟如下:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

編輯Run Command,使用如下參數(shù),效果如圖:

"${OUTPUT_PATH}" -cp "/home/feng/IdeaProjects/Test/target/classes" com.feng.Test

在這里插入圖片描述

點(diǎn)擊應(yīng)用,然后點(diǎn)擊確認(rèn),效果如圖:

在這里插入圖片描述

切換到Test,點(diǎn)擊運(yùn)行,這個(gè)時(shí)候會(huì)彈出選擇可執(zhí)行的命令,這里需要選擇編譯后的OpenJDK中的java命令,效果如圖:

在這里插入圖片描述

啟動(dòng)成功后,會(huì)打印出來(lái)我們?cè)趇dea中編寫的Test代碼的執(zhí)行結(jié)果,如下圖所示:

在這里插入圖片描述

這個(gè)時(shí)候我們就可以在OpenJDK中添加斷點(diǎn),對(duì)OpenJDK進(jìn)行調(diào)試了,在openjdk->jdk->src->share->bin->java.c文件中JavaMain方法處添加斷點(diǎn)進(jìn)行調(diào)試,如下圖所示:

在這里插入圖片描述

到這里整個(gè)OpenJDK源碼調(diào)試的過(guò)程就結(jié)束了,大家如果有什么問(wèn)題,可以給我留言,大家共同交流進(jìn)步。

到此這篇關(guān)于OpenJDK源碼調(diào)試的文章就介紹到這了,更多相關(guān)OpenJDK源碼調(diào)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA中阻止類的繼承(官方和非官方)

    JAVA中阻止類的繼承(官方和非官方)

    在面向?qū)ο蟮睦碚撝? 有一些方案要求你用一個(gè)辦法來(lái)聲明一個(gè)不可繼承的類。一般而言,如果類提供的功能不應(yīng)該被改變,或者更恰當(dāng)?shù)恼f(shuō),是被覆蓋(override)的時(shí)候才會(huì)出現(xiàn)這種情況。在這篇文章里,我討論在JAVA語(yǔ)言中的實(shí)現(xiàn)辦法--官方和非官方的辦法
    2014-01-01
  • Java后端傳時(shí)間戳給前端的三種方式

    Java后端傳時(shí)間戳給前端的三種方式

    時(shí)間戳是一份能夠表示一份數(shù)據(jù)在一個(gè)特定時(shí)間點(diǎn)已經(jīng)存在的完整的可驗(yàn)證的數(shù)據(jù),本文給大家介紹了Java后端傳時(shí)間戳給前端的三種方式,并通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-12-12
  • Spring?Feign超時(shí)設(shè)置深入了解

    Spring?Feign超時(shí)設(shè)置深入了解

    Spring?Cloud中Feign客戶端是默認(rèn)開(kāi)啟支持Ribbon的,最重要的兩個(gè)超時(shí)就是連接超時(shí)ConnectTimeout和讀超時(shí)ReadTimeout,在默認(rèn)情況下,也就是沒(méi)有任何配置下,F(xiàn)eign的超時(shí)時(shí)間會(huì)被Ribbon覆蓋,兩個(gè)超時(shí)時(shí)間都是1秒
    2023-03-03
  • java生成圖片驗(yàn)證碼功能

    java生成圖片驗(yàn)證碼功能

    最近在用ssm框架做一個(gè)管理系統(tǒng),做到登錄驗(yàn)證時(shí),需要實(shí)現(xiàn)圖片驗(yàn)證碼功能,今天小編給大家分享基于java制作的圖片驗(yàn)證碼功能,感興趣的朋友一起看看吧
    2019-12-12
  • Spring Security 構(gòu)建rest服務(wù)實(shí)現(xiàn)rememberme 記住我功能

    Spring Security 構(gòu)建rest服務(wù)實(shí)現(xiàn)rememberme 記住我功能

    這篇文章主要介紹了Spring Security 構(gòu)建rest服務(wù)實(shí)現(xiàn)rememberme 記住我功能,需要的朋友可以參考下
    2018-03-03
  • 關(guān)于StringUtils.isBlank()的使用及說(shuō)明

    關(guān)于StringUtils.isBlank()的使用及說(shuō)明

    這篇文章主要介紹了關(guān)于StringUtils.isBlank()的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java的時(shí)間類匯總(齊全)

    java的時(shí)間類匯總(齊全)

    這篇文章主要介紹了java的時(shí)間類匯總(齊全),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Mybatis執(zhí)行插入語(yǔ)句后并返回主鍵ID問(wèn)題

    Mybatis執(zhí)行插入語(yǔ)句后并返回主鍵ID問(wèn)題

    這篇文章主要介紹了Mybatis執(zhí)行插入語(yǔ)句后并返回主鍵ID問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java實(shí)現(xiàn)音頻添加自定義時(shí)長(zhǎng)靜音的示例代碼

    Java實(shí)現(xiàn)音頻添加自定義時(shí)長(zhǎng)靜音的示例代碼

    這篇文章主要介紹了一個(gè)Java工具類,可以實(shí)現(xiàn)給一個(gè)wav音頻添加自定義時(shí)長(zhǎng)靜音。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-01-01
  • Java8 Comparator源碼演示及解析

    Java8 Comparator源碼演示及解析

    這篇文章主要介紹了Java8 Comparator源碼演示及解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

施秉县| 洛浦县| 岚皋县| 沈阳市| 汶上县| 漯河市| 崇义县| 九江县| 五峰| 兴业县| 南岸区| 虹口区| 清河县| 丰镇市| 正镶白旗| 临城县| 巢湖市| 武胜县| 宣城市| 藁城市| 双流县| 修水县| 三门峡市| 水富县| 牡丹江市| 汶川县| 龙州县| 米脂县| 张家港市| 防城港市| 阳朔县| 祁东县| 景德镇市| 景东| 沐川县| 潢川县| 玛纳斯县| 宝兴县| 黔东| 赤壁市| 宁陕县|