標籤:java 虛擬機器 hsdb
本人最近正在學習java虛擬機器,而HSDB是學習java虛擬機器的必經之路,於是今天嘗試下了HSDB的調試。
首先借鑒了知乎大牛R大的文章: 借HSDB來探索HotSpot VM的運行時資料,而本文章的意義在於協助和我一樣想學習java虛擬機器但平時過於依賴ide的同學。我的環境是JDK8。廢話不多說了,直接。
1.建立並編譯代碼
650) this.width=650;" title="QQ圖片20170509223811.png" src="https://s3.51cto.com/wyfs02/M00/95/21/wKiom1kR1MaTgcXmAAAcnGehB7s338.png-wh_500x0-wm_3-wmp_4-s_319415952.png" alt="wKiom1kR1MaTgcXmAAAcnGehB7s338.png-wh_50" />
由於平時使用eclipse,如果沒有配好path、javahome和classpath要首先配好,然後cmd進入工程目錄下,我的package是hsdb,需要進入到hsdb的上級目錄下,執行編譯:
650) this.width=650;" title="QQ圖片20170509224928.png" src="https://s2.51cto.com/wyfs02/M02/95/21/wKioL1kR11DyTEumAAAnrRx-WxE775.png-wh_500x0-wm_3-wmp_4-s_585189790.png" alt="wKioL1kR11DyTEumAAAnrRx-WxE775.png-wh_50" />
2.jdb調試代碼並暫停
ps:jdb,jps和sa-jdi.jar都在jdk lib和bin目錄下
650) this.width=650;" title="QQ圖片20170509225459.png" src="https://s5.51cto.com/wyfs02/M01/95/21/wKioL1kR2GfzmZr_AABLrjSXStM844.png-wh_500x0-wm_3-wmp_4-s_3100643040.png" alt="wKioL1kR2GfzmZr_AABLrjSXStM844.png-wh_50" />
3.使用jps查看java程式pid
的cmd視窗保留不動,重新開啟一個新的cmd視窗,使用jps查看java程式的進程號並執行後續的HSDB啟動操作
650) this.width=650;" title="QQ圖片20170509230303.png" src="https://s3.51cto.com/wyfs02/M01/95/21/wKioL1kR2k_ydex7AAAcPWAVt80472.png-wh_500x0-wm_3-wmp_4-s_3428927772.png" alt="wKioL1kR2k_ydex7AAAcPWAVt80472.png-wh_50" />
圖中我們可以看到Main的pid是18392.
4.啟動HSDB
注意:我們大多的java裝在了C:\Program Files下路 這個完整classpath路徑需要用雙引號轉義一下,如:
650) this.width=650;" title="QQ圖片20170509230935.png" src="https://s2.51cto.com/wyfs02/M02/95/21/wKioL1kR283z3louAAAo5aj3P_k669.png-wh_500x0-wm_3-wmp_4-s_1782363628.png" alt="wKioL1kR283z3louAAAo5aj3P_k669.png-wh_50" />
執行完這個命令之後我們的HSDB工具就應該啟動了。但是我啟動的時候報了一個錯誤:Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can‘t load library: D:\Program Files\Java\XXX\sawindbg.dll.參照如下文章進行瞭解決 HSDB時,關於解決UnsatisfiedLinkError sawindbg.dll的問題筆記 。
然後我們就可以用pid號連結到進程
650) this.width=650;" title="QQ圖片20170509232013.png" src="https://s3.51cto.com/wyfs02/M01/95/22/wKioL1kR3lTyogn8AABWDv4J4hE922.png-wh_500x0-wm_3-wmp_4-s_4129247002.png" alt="wKioL1kR3lTyogn8AABWDv4J4hE922.png-wh_50" />
650) this.width=650;" title="QQ圖片20170509232219.png" src="https://s2.51cto.com/wyfs02/M00/95/22/wKioL1kR3sqCWrIzAACNRSoytDs064.png-wh_500x0-wm_3-wmp_4-s_1859168794.png" alt="wKioL1kR3sqCWrIzAACNRSoytDs064.png-wh_50" />
650) this.width=650;" title="QQ圖片20170509232332.png" src="https://s1.51cto.com/wyfs02/M00/95/22/wKiom1kR30jyJAAlAABub4kFvjM688.png-wh_500x0-wm_3-wmp_4-s_3950191431.png" alt="wKiom1kR30jyJAAlAABub4kFvjM688.png-wh_50" />
至此,我們HSDB工具已經串連到我們的java進程中,可以進行進一步的調試了。本文章意在協助第一次使用HSDB調試的同學爬坑,並給自己做個筆記。
本文出自 “刹那華芳” 部落格,請務必保留此出處http://9903567.blog.51cto.com/9893567/1923901
初次嘗試java虛擬機器調試-啟動HSDB