安裝gdb調(diào)試hotspot

概述

在前一篇文章Mac上編譯JDK里我記錄了我編譯openjdk的過程。這一篇(假如我堅持下來了)就是記錄一下用gdb來debug JVM的過程,為將來深入學(xué)習(xí)JVM機(jī)制打下基礎(chǔ)。

但是在上一篇里面,最終的make命令,使用的是make jdk,也就是編譯了一個最小的發(fā)布使用的jdk,并不是我們期望的能夠進(jìn)行源碼調(diào)試的jdk。所以在這之前,我們需要先編譯一個可以源碼調(diào)試的半本,在根目錄下執(zhí)行:

make test-image

等編譯出來之后,跑到j(luò)dk目錄下執(zhí)行java --version確認(rèn)一切都弄好了。

安裝gdb

不幸的一件事是,在Mac上是沒有g(shù)db的,所以需要手動安裝一個gdb,使用

brew install gdb

安裝gdb,不過返回的信息是:


brew install gdb

輸入gdb命令果然返回了command not found。看到上面寫著

gdb requiers special privilleges to access Mach ports。

嚇得我以為需要sudo權(quán)限,于是執(zhí)行

sudo brew link gdb

結(jié)果又來了錯誤信息:


sudo brew link gdb

這個時候我注意原來安裝不成功是因?yàn)樽C書問題,給gdb簽一個證書就可以了。
首先command+space快捷鍵喚出Mac搜索,如圖:


command + space

而后創(chuàng)建一個證書:


創(chuàng)建證書菜單

gdb-cert(這個名字后面用到)

有效期可以設(shè)置長一點(diǎn),反正都是自己的電腦:


有效期設(shè)置

證書信息

我們只需要簽名,所以選一個簽名就可以:


只勾選簽名

只勾選代碼簽名

什么都不選
采用默認(rèn)設(shè)置

最后這里要選擇系統(tǒng):


選擇系統(tǒng)

最后完成了


證書創(chuàng)建完成

而后找到剛才創(chuàng)建的證書,雙擊,將信任改為始終信任:


找到證書

信任證書

而后在終端輸入:

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

后面的這個路徑是怎么來的呢?其實(shí)就是剛才執(zhí)行brew install gdb之后安裝的位置,在執(zhí)行brew link gdb輸出的信息里面就能發(fā)現(xiàn)。

這個時候,我嘗試再一次執(zhí)行brew link gdb,還是收到了錯誤:


brew link gdb再次報錯

我嘗試執(zhí)行了brew doctor:


brew doctor

嗯,有兩個warning,所以按照它給出的建議,執(zhí)行了一下命令:

sudo mkdir -p /usr/local/include /usr/local/sbin
sudo chown -R xxx(替換為用戶名) /usr/local/include /usr/local/sbin

而后執(zhí)行brew link gdb
這個時候執(zhí)行

gdb --version
gdb輸出版本信息

很好,現(xiàn)在已經(jīng)搞好了。
如果之前找gdb的路徑不太順利,覺得可能找錯了,這個時候你可以再執(zhí)行一下:

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

我這邊輸出是:


再次給gdb簽名

說明我之前就已經(jīng)執(zhí)行成功了。

最后再執(zhí)行

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

大功告成。

這一句我也不知道有什么效果,反正就是我沒執(zhí)行的時候也順利得很,不過看到之前提示了執(zhí)行,我就執(zhí)行以下,暫時沒看出來什么效果。

開始debug

gdb啟動hotspot

這個時候我們就已經(jīng)成功使用gdb啟動了hotspot。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容