本人最近正在学习java虚拟机,而HSDB是学习java虚拟机的必经之路,于是今天尝试下了HSDB的调试。
首先借鉴了知乎大牛R大的文章: 借HSDB来探索HotSpot VM的运行时数据,而本文章的意义在于帮助和我一样想学习java虚拟机但平时过于依赖ide的同学。我的环境是JDK8。废话不多说了,直接上图。
1.创建并编译代码
由于平时使用eclipse,如果没有配好path、javahome和classpath要首先配好,然后cmd进入工程目录下,我的package是hsdb,需要进入到hsdb的上级目录下,执行编译:
2.jdb调试代码并暂停
ps:jdb,jps和sa-jdi.jar都在jdk lib和bin目录下
3.使用jps查看java程序pid
上图的cmd窗口保留不动,重新打开一个新的cmd窗口,使用jps查看java程序的进程号并执行后续的HSDB启动操作
图中我们可以看到Main的pid是18392.
4.启动HSDB
注意:我们大多的java装在了C:\Program Files下路 这个完整classpath路径需要用双引号转义一下,如下图:
执行完这个命令之后我们的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号链接到进程
至此,我们HSDB工具已经连接到我们的java进程中,可以进行进一步的调试了。本文章意在帮助第一次使用HSDB调试的同学爬坑,并给自己做个笔记。
本文出自 “刹那华芳” 博客,请务必保留此出处http://9903567.blog.51cto.com/9893567/1923902
原文地址:http://9903567.blog.51cto.com/9893567/1923902