[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 $![](https://img2018.cnblogs.com/blog/1654682/201906/1654682-20190604132511797-848777094.png) hg clone 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,创建一个命令行项目:

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

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

[Inside HotSpot] Xcode编译调试OpenJDK12

再次运行,一切顺利!

[Inside HotSpot] Xcode编译调试OpenJDK12

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxxpf.html