博客 / 詳情

返回

編譯Java虛擬機

編譯前準備

安裝hg版本控制

yum install -y hg

安裝依賴庫

yum install -y "Development Tools"
yum install -y gcc g++ kernel-devel
yum? -y install libXtst-devel libXt-devel libXrender-devel libXi-devel

準備JDK

為編譯虛擬機,首先必須獲得虛擬機的源碼,大家可以使用下面的命令獲取JDK10的源碼。
推薦使用較新的版本,因為老版本的編譯腳本可能在某平台上存在問題。

hg clone http://hg.openjdk.java.net/jdk10/jdk10

準備一個BootJDK。Boot JDK用於OpenJDK編譯的執行。這裏用到的是JDK8,也推薦各位使用JDK8作為JDK10的Boot JDK

準備編譯

準備就緒之後,就可以開始編譯了。

進入解壓後的openjdk目錄:

image.png

執行configure腳本配置編譯選項,本人的配置如下:

bash configure --with-debug-level=slowdebug --enable-dtrace --with-jvm-variants=server --with-target-bits=64 --with-memory-size=3000 --disable-warnings-as-errors --with-boot-jdk=/usr/local/src/jdk1.8 --with-native-debug-symbols=internal

配置成功後會顯示下面的信息:
image.png

編譯JVM

下載鏡像文件

bash get_source.sh

編譯

make images

此次編譯將會生成debug版本的虛擬機,編譯的過程可能會花費比較長的時間,一般來説,編譯一個版本可能要15-45分鐘的,視計算機性能而定。
當編譯成功後,會有以下輸出:

image.png

進入build目錄,可以看到編譯的結果,下面顯示了debug版本的編譯結果:

image.png

有了debug版本的虛擬機,就可以使用gdb對虛擬機進行調試了。

Java虛擬機調試

進入build/linux-x86_64-normal-server-slowdebug/jdk/bin/目錄,用gdb啓動Java可執行程序,隨後就進到了gdb命令行環境:

gdb -args ./java -version

image.png

在main函數中打斷點

略。。。

user avatar kangkaidafangdezi 頭像 chenzhuodegan_czbzv7 頭像 huzilachadedanche 頭像 nian_5aedc008c1353 頭像
4 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.