[Inside HotSpot] Xcode编译调试OpenJDK12

编译

下载brew然后安装hg,freetype,ccache

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install ccache
$ brew install freetype
$ brew install hg
$ hg clone http://hg.openjdk.java.net/jdk/jdk12 openjdk12
$ cd openjdk12
$ chmod +x configure
$ ./configure --enable-ccache --witt-debug-level=server-fastdebug
$ make all #or make hotspot

一切完成后openjdk12/build/macos-x86_64-server-fastdebug就是编译产出。

xcode调试

打开xcode创建一个项目,然后选择macOS,创建一个命令行项目:

1654682-20190604132535182-168895597.png

然后选中新项目自动创建的文件右键删除

1654682-20190604132543841-1873187090.png

接着配置启动项。对着停止那个方块按钮旁边的按钮右键Edit Scheme

1654682-20190604132552173-365706271.png

在运行里面选择basic configuration,选择other

1654682-20190604132602208-1768625615.png

这里选择之前编译出来的jvm,比如我的目录是/Users/kelthuyang/Desktop/openjdk12/build/macosx-x86_64-server-fastdebug/jdk/bin

1654682-20190604132611282-226548208.png

然后选择Argument给虚拟机加个启动参数,这里随便写个java hello world,然后javac编译得到字节码文件,-cp 指定字节码所在目录,后面加上类名

1654682-20190604132620819-876775887.png

然后选中工程add files to project将hotspot源代码倒入到项目

1654682-20190604132629466-827631927.png

1654682-20190604132637100-1958490069.png

到这里已经可以运行了,直接运行会出现sigsegv信号,这是正常情况,但是会阻碍调试。可以在lldb中使用process handle SIGSEGV -s false

1654682-20190604132645709-100611226.png

不过每次运行都需要输入比较麻烦,可以设置符号断点忽略sigsegv信号。选择左边创建那个箭头,然后最下面加号选择symbolic breakpoint

1654682-20190604132654365-586122063.png

随便加一个,比如我加的是Threads::create_vm模块忽略sigsegv

1654682-20190604132702258-2125327847.png

再次运行,一切顺利!

1654682-20190604132712821-1706886835.png

转载于:https://www.cnblogs.com/kelthuzadx/p/10972992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值