相關文章
昨天已經可以自己編譯 JDK 了。但是很明顯還缺一個重要的環節,那就是調試 JDK。調試 JDK 有朋友說可以使用 GDB,但是對於我們應用層開發者來說,使用 IDE 進行調試可能會習慣點,而且交互更加友好。經過對比 VS Code、Xcode 和 CLion。最終選擇了 CLion。
CLion 官方下載地址:https://www.jetbrains.com/clion/
在 CLion 中引入 OpenJDK 工程
具體引入的工程是我昨天從 http://jdk.java.net/ 上下載的 OpenJDK 12。目錄如下:
這裏引入的時候,直接選擇 openjdk 目錄即可:
接下來再配置相關的參數:
下面的 Build 要去掉,還要注意這裏要選擇昨天已經編譯好了的 JDK 的 java 文件(Unix 可執行文件):
運行 OpenJDK,開始調試
在 java.c 的 JavaMain
函數中打一個斷點,Debug 啓動:
發現已經進去了。
調試自己編寫的 Java 代碼
先隨便寫一個 Hello.java 程序:
public class Hello {
public static void main(String[] args) {
System.out.print("hello");
}
}
➜ bin pwd
/Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin
➜ bin ./javac Hello.java
Hello.java:1: 錯誤: 寫入Hello時出錯: /Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin/Hello.class
public class Hello {
^
1 個錯誤
➜ bin sudo ./javac Hello.java
Password:
再在 CLion 進行配置:
Debug 運行:
控制檯輸出:
/Users/dongguabai/Desktop/temp/openjdk12/openjdk/build/macosx-x86_64-serverANDclient-slowdebug/jdk/bin/java Hello
Signal: SIGSEGV (signal SIGSEGV)
Signal: SIGSEGV (signal SIGSEGV)
Signal: SIGSEGV (signal SIGSEGV)
hello
Process finished with exit code 0
也就是說目前已經實現了可以通過調試 OpenJDK 運行自己的代碼!
References
- https://juejin.im/post/5da135ff518825083d3ba76b
歡迎關注公衆號