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

参考

相关文章
相关标签/搜索