摘要:占用率太高,還出各種奇怪問題,轉投調試安裝下載源代碼漫長等待,中間無數次中斷安裝安裝可選如果要使用解釋器,需要安裝設置調試級別,設成可以提供更多的調試信息設置路徑
Intellij CLion CPU 占用率太高,還出各種奇怪問題,轉投 Xcode 調試 hotspot
安裝 hg# brew install hg下載 open jdk 9 源代碼
# hg clone http://hg.openjdk.java.net/jdk9/dev
漫長等待,中間無數次中斷
安裝 freetype# brew install freetype安裝 libffi(可選)
如果要使用 zero 解釋器,需要安裝 libffi
# brew install libfficonfigure
# bash configure --with-debug-level=slowdebug --with-freetype=/usr/local/opt/freetype --disable-warnings-as-errors --with-jvm-features=zero --with-jvm-variants=zero --with-libffi=/usr/local/opt/libffi --with-libffi-include=/usr/local/Cellar/libffi/3.0.13/lib/libffi-3.0.13/include--with-debug-level
設置調試級別,設成 slow debug 可以提供更多的調試信息
--with-free-type設置 free type 路徑
--disable-warnings-as-errors忽略警告
--with-jvm-features設置使用 c++ 實現的 zero 解釋器,比基于模版的解釋器更容易調試(如果匯編功力不夠的話)
--with-jvm-variants配合 --with-jvm-features 使用
--with-libffi配合 --with-jvm-features 使用
--with-libffi-include設置 libffi include 文件夾路徑
make# make
構建成功后:
jdk -> build/macosx-x86_64-normal-server-slowdebug/jdk
hotspot -> build/macosx-x86_64-normal-server-slowdebug/hotspot
新建一個 command line(命令行工具)工程,新建后刪除 XCode 自動生成的代碼
編輯 hotspot scheme首先去掉 IDE build 配置,因為我們無法(也不需要)在IDE中構建 hotspot,其次將運行目標修改為:
右擊 hotspot 工程,選擇 "add files to project" 添加
在 jni.cpp 的 JNI_CreateJavaVM 方法中設置斷點, goooooo
如果出現 sigsegv 信號中斷,可以在 lldb 中設置
(lldb) process handle SIGSEGV --stop=false
上圖
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65895.html
摘要:準備工作假設源代碼目錄為編譯時啟用了解釋器參考編譯和調試調用棧先在函數參考虛擬機入口中設斷點,然后在的方法中設置斷點通過宏獲取當前,然后創建第個棧幀,然后進入解釋執行字節碼 準備工作 假設 openjdk 源代碼目錄為 jdk9dev 編譯 openjdk 時啟用了 zero 解釋器(參考 OpenJDK9 Hotspot Mac OSX 編譯和調試) 調用棧 先在 JavaMai...
摘要:假設源代碼目錄為函數函數在,它處理完命令行參數后跳轉到函數處理命令行選項函數在,它調用加載這個就是編譯的產出在系統下在使用加載動態庫并獲取函數入口地址在系統下在熟悉的同學,對下面的代碼應該會感到很親切創建對象,并將控制流跳轉到呵呵,在 假設 openjdk 源代碼目錄為 jdk9dev main函數 main 函數在 jdk9dev/jdk/src/java.base/share/na...
摘要:前言語言可以精確控制對象內存分配,出于性能考慮框架系統程序基本都會自己造輪子開發各種內存管理模塊也不例外,它通過和方法的訪問級別以及重載和方法來管理虛擬機內部對象的內存內存管理相關的基類定義了幾個基類來作為大部分對象的基類顧名思義,它們只能 前言 C++ 語言可以精確控制對象內存分配,出于性能考慮 C++ 框架 or 系統程序基本都會自己 造輪子 開發各種內存管理模塊. hotspot...
摘要:前言網上各路大神總結過各種關于內部實現,看別人的文章總覺得不過癮,所以有了這篇文章,嘗試再扒一次的底褲數據結構在分析源代碼之前需要了解相關概念,比如等,參考網絡上各種解說或者之前系列文章,這里重點介紹一下,,每個在內部都有一個的對象與之對應 前言 網上各路大神總結過各種關于 hotspot jvm synchronized 內部實現,看別人的文章總覺得不過癮,所以有了這篇文章,嘗試再扒...
摘要:前言本文從類的方法的內部實現入手,分析多線程相關的數據結構類和原理類方法類的方法用于啟動線程,方法內部調用了方法在源代碼中搜索,可以看到對應函數在源代碼中搜索函數核心代碼計算線程堆棧大小創建對象初始化啟動線程在創建時傳入了一個函數指針, 前言 本文從 Java Thread 類的 start 方法的內部實現入手,分析 Hotspot JVM 多線程相關的數據結構(類)和原理 Threa...
閱讀 2725·2023-04-25 17:58
閱讀 2992·2021-11-15 11:38
閱讀 2392·2021-11-02 14:48
閱讀 1201·2021-08-25 09:40
閱讀 1834·2019-08-30 15:53
閱讀 1107·2019-08-30 15:52
閱讀 1043·2019-08-30 13:55
閱讀 2445·2019-08-29 15:21