您的位置:网站首页 > Java软件 > 正文

Java虚拟机HotSpot调试实例

类别:Java软件 日期:2017-12-7 17:17:13 人气: 来源:

  这篇文章,怎么说呢。是踩了很多坑得出来了,也是在自己快要崩溃的时候得出来了的。连续踩了差不多10来个小时的坑,还好是出来了。

  这篇文章是调试虚拟机的,其实网上也能找到一些文章,但是每个人的不一样,可能有的很顺利,有的就不一样了。但是踩了坑比较多,你才会横向发现有些别人其实是没讲到位的,也就是一笔带过的。

  openjdk编译后会成为一个可用的jdk,jdk中就包含了虚拟机。虚拟机,众所周知,是一个让class文件运行的平台,那么这次调试,你可以先理解为当class文件运行,我们将断点停留在虚拟机。

  1、既然是要调试虚拟机,那我们最好是不是要一个ide来调试呢,由于虚拟机是c编写的,所以我们下载一个netBeans Ide。

  这里要提示两点,第一点,下载ide的时候要下载c++版本的。第二点ide最好下载7.0.1版本的,因为有些版本无法跳入到断点,这算一个坑

  中间的alt_bootdir实际上我上篇文章编译openjdk的那个Oraclejdk1.6。至于为什么要用这个版本大家可以去查一下,

  其实还有另一点。你电脑上如果jdk是1.8的,你的netBeanIde运行不起来,所以低版本就好,我的是1.6.0_32。

  运行命令的意思是,用什么去运行什么,第一个什么就是gamma,这个gamma就是虚拟机程序,第二个什么就是指的你要在虚拟机上运行的class文件。当然class文件的运行

  实际上是为了调试虚拟机,这点要清楚,你class都没有运行,怎么调试你的虚拟机呢。我的命令如下:

  注意中间的空格,gamma是hotspot源代码编译后生成的,要生成后才有,但是你要找到你gamma的径,后面的两个是gamma的参数,最后的一个长径是你要

  运行的class文件地址。你大可写成绝对径,就不用在后续的classpath地址上加这个长径了。

  8、在下图的文件层次结构下找到java.c这个就是虚拟机的入口了,你可以先打上断点。然后右击项目选择调试

  9、点了调试后会是漫长的等待,知道有一刻你发现断点在main函数中停留了,那就说明是成功了,最后运行完毕后,可以看到控制台的结果如下:

  10、现在你就可以将你的程序替换的Queens类文件了,当你的程序运行的时候你就可以进一步窥探虚拟机怎么运行的了。

  谢谢各位,如果看完了,希望能关注一波,写这个东西很费时间的,文章不是重点,交个朋友才是重中之重!

  本站(LinuxIDC)所刊载文章不代表同意其说法或描述,仅为提供更多信息,也不构成任何。

  延伸相关词:

  陈小艺被曝姐弟恋,倒追小伙被当保姆,陆贞传奇演员表,人鱼情未了 电视剧,莫小棋三级,保拉的诱惑,李慧珍老公,luciano rivarola,如意剧情介绍电视猫,电视剧当狗爱上猫

0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved