国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        寫了那么多年 Java 代碼,終于 debug 到 JVM 了

        繼上篇文章 原創 | 全網最新最簡單的 OpenJDK13 代碼編譯 之后,我們有了自己編譯后的 jdk 和 hotspot,如下圖所示。接下來就來干一番事情。

        搭建調試環境1.下載 CLion 軟件

        Jetbrains 是一家非常牛逼的公司,咱 Java 里面用到的 IDEA 功能很強大,這公司也為 C/C++ 提供一個 IDE,名叫 CLion,咱需要下載這個 IDE 來調試 JVM 源碼。

        2.導入源碼

        安裝完 CLion 之后,咱就可以先導入代碼,下面簡單記錄一下操作步驟。

        選擇 New CMake Project from Sources。

        打開我們下載 OpenJDK13 的目錄,我的目錄是 /opt/java/openjdk/jdk13。

        接下來有彈框點擊 Next 就行了,等待導入源碼完成(需要幾分鐘,可以喝杯茶)。

        3.啟動配置

        導完源碼后,我們需要配置啟動程序,這里有些配置需要重新指定,主要有下面 2 點。

        Executable 修改為咱們編譯后的 java 程序。

        Build 需要刪除掉。

        4.打下斷點

        我們在 thread.cpp 代碼的 Threads::create_vm 方法打下斷點。

        5.開始 Debug

        點擊 Debug 按鈕,開始調試我們的 JVM 代碼?梢钥吹轿覀兇虻臄帱c生效了,如下圖所示。

        恭喜,我們成功調試 JVM 代碼。不過發現了下面這個異常信息,解決它。

        6.發現這個異常

        按 F9 讓程序繼續跑,我們發現 Console 出現了下面紅框的一行字。

        這是 GDB 的異常信息,我們可以通過在我們的用戶目錄下添加配置來解決這個問題。創建 ~/.gdbinit 文件,添加如下配置。

        handle SIGSEGV nostop noprint pass
        handle SIGBUS nostop noprint pass
        handle SIGFPE nostop noprint pass
        handle SIGPIPE nostop noprint pass
        handle SIGILL nostop noprint pass

        再運行就不會有這個異常信息了。

        調試自己的代碼

        上面已經調通了我們編譯的 JVM 源碼,有同學可能想知道,那要調試自己寫的代碼得怎么操作呢?我們上面已經看到 Debug 到 JVM 源碼了,我們自己的代碼則可以通過我們編譯后的 JDK 來編譯,然后在程序執行參數那里指定。下面舉個例子。

        1.編寫 Test 代碼

        我們編寫一個簡單的 Hello JVM 程序,代碼如下。

        public class Test {
           public static void main(String[] args) {
               System.out.println("hello jvm");
           }

        2.javac 編譯

        通過我們編譯后的 JDK 命令 javac Test.java 來編譯。

        liebrother@liebrother:/opt/java/openjdk/jdk13/build/linux-x86_64-server-release/jdk/bin$ ./javac Test.java
        3.配置啟動參數

        然后在 Clion 程序啟動配置那里指定我們的類 Test。

        結果就是我們的程序被運行了。

        以上就是我們今天要講的在 JVM 層面上調試我們自己寫的程序。

        總結

        總結一下搭建這套 JVM 環境。搭建過程中其實沒有很波折,官方文檔寫的很清晰(雖然都是英文的),這 2 篇文章也是盡最大的努力,把一些步驟簡化,也截圖保留下來,一方面給自己回顧的機會,一方面也是給有想要搭建這套環境的朋友們一個捷徑。這套環境接下來的定義是:給自己深入了解 JVM 的機會,在遇到某些知識點不清晰,不明白原理的時候,就可以看一看源碼,揪出源頭的邏輯。

        非常建議朋友們搭建這么一套環境,也不要怕 JVM 里面都是 C/C++ 代碼,可能剛開始看的時候會很費勁,看多了就習慣了。

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 久久中文字幕人妻| 牛牛AV| 9191久久| 亚洲无码电影在线观看| 在线观看日韩av| 资溪县| 一本色道久久88综合无码| 巴彦县| 国产尻逼| jizz亚洲| 凤冈县| 久久66| 岳乳丰满一区二区三区| 亚洲v在线| 欧美福利极品| 阳朔县| 亚洲男人天堂网| jizz日本在线观看| 亚洲成人色情| 中文字幕A片无码免费看| 信丰县| 亚洲v在线| 亚洲熟女视讯2| 精品免费100| 久热天堂| 天天综合91| 门头沟区| 福利av在线| 最大成人精品一区| 海南省| 亚洲成人在线播放| 无码123| 怀柔区| caoporn国产| 成人无码小说| 国产浮力第一页| 极品在线视频| 色婷婷?av| 熟妇久久无码人妻av蜜臀www| 国产精品伦子伦露脸| 亚洲图片另类|