JamVM 開發調試環境搭建

JamVM is an open-source Java Virtual Machine that aims to support the latest version of the JVM specification, while at the same time being compact and easy to understand.java

簡單講, JamVM 是使用 C 語言實現的精簡版的 JVM. 做爲入門虛擬機的項目比較適合. 下文用來搭建 JamVM 的開發調試環境, 爲進一步分析實現打基礎.linux

編譯 JamVM

爲方便起見, 我的在 Github 建了鏡像, 因爲原項目自2015年後便中止更新, 我的修改會直接推送到主分支.
如下爲編譯步驟, 假設用戶爲 macos 用戶.
使用 vagrant 來管理虛擬機, 在虛擬機裏編譯.git

宿主機操做

# 安裝必要依賴
brew install vagrant
brew install virtualbox
brew install gdb

# 克隆項目
cd $HOME
git clone git@github.com:guxingke/jamvm.git

# 啓動虛擬機
cd jamvm
vagrant up
// 若是初始化報錯了, 執行  vagrant reload , 通常會成功.

複製代碼

虛擬機操做

進入虛擬機

vagrant ssh
# 正常狀況下,會進入新的 shell.
複製代碼

虛擬機操做步驟

cd $HOME

# gnu classpath
wget 'https://ftp.gnu.org/gnu/classpath/classpath-0.99.tar.gz'
tar -xvf classpath-0.99.tar.gz
cd classpath-0.99/
export ANTLR_JAR=/usr/share/java/antlr4.jar
./configure --disable-gtk-peer --disable-gconf-peer --disable-plugin
make -i
sudo make -i install

# jamvm
cd /vagrant

./autogen.sh
./configure
make
sudo make install

# 驗證
echo "public class HelloWorld { public static void main(String[] args) { System.out.println(\"Hello World\"); } }" > HelloWorld.java
javac HelloWorld.java
/usr/local/jamvm/bin/jamvm HelloWorld
# 輸出 hello world 即正常編譯
複製代碼

遠程調試

本地使用 Clion 調試虛擬機內 JamVM.github

遠程調試效果

1583763248.png

實現步驟

虛擬機內使用 gdbserver 開啓監聽

gdbserver :1234 /usr/local/jamvm/bin/jamvm HelloWorld
複製代碼

Clion 配置 gdb remote debugger

1583763874.png

注意點1, gdb 不要使用 clion 自帶的. 注意點2, localpath 改成項目根目錄shell

開始調試

與正常 Debug 一致, 斷點, next, step, continue.....macos

小結

記錄了 macos 系統下 JamVM 的開發調試環境搭建. 若是是 linux 系統, 環境就更簡單了, 不須要使用虛擬機了.bash

番外

我的記錄, 若有錯誤遺漏之處, 請看官指出, 以修正.ssh

參考

相關文章
相關標籤/搜索