[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,創建一個命令行項目:

然后選中新項目自動創建的文件右鍵刪除

接着配置啟動項。對着停止那個方塊按鈕旁邊的按鈕右鍵Edit Scheme

在運行里面選擇basic configuration,選擇other

這里選擇之前編譯出來的jvm,比如我的目錄是/Users/kelthuyang/Desktop/openjdk12/build/macosx-x86_64-server-fastdebug/jdk/bin

然后選擇Argument給虛擬機加個啟動參數,這里隨便寫個java hello world,然后javac編譯得到字節碼文件,-cp 指定字節碼所在目錄,后面加上類名

然后選中工程add files to project將hotspot源代碼倒入到項目

到這里已經可以運行了,直接運行會出現sigsegv信號,這是正常情況,但是會阻礙調試。可以在lldb中使用process handle SIGSEGV -s false

不過每次運行都需要輸入比較麻煩,可以設置符號斷點忽略sigsegv信號。選擇左邊創建那個箭頭,然后最下面加號選擇symbolic breakpoint

隨便加一個,比如我加的是Threads::create_vm模塊忽略sigsegv

再次運行,一切順利!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM