初次尝试java虚拟机调试-启动HSDB

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初次尝试java虚拟机调试-启动HSDB相关的知识,希望对你有一定的参考价值。

    本人最近正在学习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/1923901

以上是关于初次尝试java虚拟机调试-启动HSDB的主要内容,如果未能解决你的问题,请参考以下文章

JPDA 远程调试方法记录

JVM之类加载器加载过程及双亲委派机制

JVM之类加载器加载过程及双亲委派机制

Java 虚拟机原理Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )

深入理解java虚拟机读书笔记1--java内存区域

远程调试:无法连接到远程虚拟机。连接超时