MacOS Mojave(10.14)用gdb調(diào)試hotspot

前言

如果想要了解如何在此版本下編譯openjdk可以 參考前文。
執(zhí)行全量的build可以使用如下命令:

make all

但是如果只是build hotspot。則如下即可:

make hostspot

在build目錄的hotspot目錄下可以看到build結(jié)果。

下邊簡(jiǎn)單說說可能會(huì)遇到的問題。

gdb版本回退

默認(rèn)情況下homebrew安裝的gdb版本是已經(jīng)大于8.1了。在此版本之上編譯有點(diǎn)問題, 會(huì)出現(xiàn)如下的報(bào)錯(cuò):

During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
version

解決方式是將gdb回退到8.0.1版本即可。

$ brew uninstall gdb
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c3128a5c335bd2fa75ffba9d721e9910134e4644/Formula/gdb.rb

gdbsign

極有可能出現(xiàn)下方的問題。

Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

這種情況需要手工嵌一個(gè)證書即可。可見此處的 qed 的回答即可。
https://stackoverflow.com/questions/11504377/gdb-fails-with-unable-to-find-mach-task-port-for-process-id-error
切記需要切換到root賬號(hào)。

libjvm.dylib丟失

這種也不明白為什么就沒這個(gè)文件。但是能發(fā)現(xiàn)在gdbTest目錄是有這個(gè)文件的。嘗試copy過來即可。

信號(hào)量

可能會(huì)出現(xiàn)下列異常

 Thread 3 received signal SIGSEGV, Segmentation fault.

不用太理會(huì)。這是jvm自身的signal處理機(jī)制。嘗試continue即可。如果真的覺得很煩, 可以嘗試修改 hotspot/variant-server/libjvm/hotspot 中的 init_gdb方法,將

handle SIGUSR1 nostop noprint
handle SIGUSR2 nostop noprint

修改為

handle SIGUSR1 nostop noprint
handle SIGUSR2 nostop noprint 
handle SIGSEGV pass noprint nostop

大功告成

enjoy it!

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

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

  • openjdk9u源碼分析一:搭建環(huán)境 搭建環(huán)境可分兩步, ??1. 搭建jdk9u編譯環(huán)境??2. ...
    碼頭軍閱讀 4,952評(píng)論 5 2
  • 程序調(diào)試的基本思想是“分析現(xiàn)象->假設(shè)錯(cuò)誤原因->產(chǎn)生新的現(xiàn)象去驗(yàn)證假設(shè)”這樣一個(gè)循環(huán)過程,根據(jù)現(xiàn)象如何假設(shè)錯(cuò)誤原...
    Manfred_Zone閱讀 16,735評(píng)論 0 26
  • 恭喜你,當(dāng)你來到這個(gè)帖子, 說明pdb的調(diào)試功能已經(jīng)開始滿足不了你。 Gdb 在7.0+ 版本上已經(jīng)支持Pytho...
    羅兆峰閱讀 6,836評(píng)論 3 2
  • 爸媽的結(jié)合是通過媒人。說起媒人,在那個(gè)年代,可是個(gè)非常吃香的崗位??恐粡埬苷f會(huì)道的嘴,就能吃遍方圓幾十里!爸媽的...
    清雅520閱讀 452評(píng)論 0 2
  • 我媽是一個(gè)很嘮叨的人。 自我回家以來, 她一直在嘮叨, 一直在嘮叨, 現(xiàn)在還在嘮叨。 有時(shí)候真的很煩, 于是在心里...
    多蘿西西里閱讀 158評(píng)論 0 1

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