安装gdb调试hotspot

概述

在前一篇文章Mac上编译JDK里我记录了我编译openjdk的过程。这一篇(假如我坚持下来了)就是记录一下用gdb来debug JVM的过程,为将来深入学习JVM机制打下基础。

但是在上一篇里面,最终的make命令,使用的是make jdk,也就是编译了一个最小的发布使用的jdk,并不是我们期望的能够进行源码调试的jdk。所以在这之前,我们需要先编译一个可以源码调试的半本,在根目录下执行:

make test-image

等编译出来之后,跑到jdk目录下执行java --version确认一切都弄好了。

安装gdb

不幸的一件事是,在Mac上是没有gdb的,所以需要手动安装一个gdb,使用

brew install gdb

安装gdb,不过返回的信息是:


安装gdb调试hotspot_第1张图片
brew install gdb

输入gdb命令果然返回了command not found。看到上面写着

gdb requiers special privilleges to access Mach ports。

吓得我以为需要sudo权限,于是执行

sudo brew link gdb

结果又来了错误信息:


sudo brew link gdb

这个时候我注意原来安装不成功是因为证书问题,给gdb签一个证书就可以了。
首先command+space快捷键唤出Mac搜索,如图:


command + space

而后创建一个证书:


创建证书菜单

安装gdb调试hotspot_第2张图片
gdb-cert(这个名字后面用到)

有效期可以设置长一点,反正都是自己的电脑:


安装gdb调试hotspot_第3张图片
有效期设置

安装gdb调试hotspot_第4张图片
证书信息

我们只需要签名,所以选一个签名就可以:


安装gdb调试hotspot_第5张图片
只勾选签名

安装gdb调试hotspot_第6张图片
只勾选代码签名

什么都不选
安装gdb调试hotspot_第7张图片
采用默认设置

最后这里要选择系统:


安装gdb调试hotspot_第8张图片
选择系统

最后完成了


安装gdb调试hotspot_第9张图片
证书创建完成

而后找到刚才创建的证书,双击,将信任改为始终信任:


安装gdb调试hotspot_第10张图片
找到证书

信任证书

而后在终端输入:

sudo codesign -s gdb-cert /usr/local/Cellar/gdb/8.2/bin/gdb

后面的这个路径是怎么来的呢?其实就是刚才执行brew install gdb之后安装的位置,在执行brew link gdb输出的信息里面就能发现。

这个时候,我尝试再一次执行brew link gdb,还是收到了错误:


安装gdb调试hotspot_第11张图片
brew link gdb再次报错

我尝试执行了brew doctor:


安装gdb调试hotspot_第12张图片
brew doctor

嗯,有两个warning,所以按照它给出的建议,执行了一下命令:

sudo mkdir -p /usr/local/include /usr/local/sbin
sudo chown -R xxx(替换为用户名) /usr/local/include /usr/local/sbin

而后执行brew link gdb
这个时候执行

gdb --version
安装gdb调试hotspot_第13张图片
gdb输出版本信息

很好,现在已经搞好了。
如果之前找gdb的路径不太顺利,觉得可能找错了,这个时候你可以再执行一下:

sudo codesign -s gdb-cert /usr/local/bin/gdb

我这边输出是:


再次给gdb签名

说明我之前就已经执行成功了。

最后再执行

echo "set startup-with-shell off" >> ~/.gdbinit

大功告成。

这一句我也不知道有什么效果,反正就是我没执行的时候也顺利得很,不过看到之前提示了执行,我就执行以下,暂时没看出来什么效果。

开始debug

安装gdb调试hotspot_第14张图片
gdb启动hotspot

这个时候我们就已经成功使用gdb启动了hotspot。

你可能感兴趣的:(安装gdb调试hotspot)