java-调试hotspot

转载 2016年08月31日 09:43:39

转自 http://blog.csdn.net/pange1991/article/details/51580969


一、下载并安装Netbeans 7.0.1 (c/c++)
http://share.weiyun.com/6292e450ed1c88423812e268f355a108
或者官网下载https://netbeans.org/community/releases/70/
ps:之所以使用7.0.1版本,是因为我在使用8.1,8.0,7.4版时,不能进行正常的Debug。

二、使用Netbeans调试
1、新建项目

这里写图片描述

指定makefile
这里写图片描述

<code class="hljs applescript has-numbering">/usr/<span class="hljs-type">application</span>/tools/openjdk/hotspot/make/Makefile</code><ul style="" class="pre-numbering"><li>1</li></ul>

然后一直默认下一步,直到完成为止

2、运行配置
项目右键选择属性,进行参数设置
这里写图片描述
(1)修改生成命令

<code class="hljs ruby has-numbering"><span class="hljs-variable">${</span><span class="hljs-constant">MAKE</span>} -f <span class="hljs-constant">Makefile</span> clean jvmg <span class="hljs-constant">ALT_BOOTDIR</span>=<span class="hljs-regexp">/usr/application</span><span class="hljs-regexp">/tools/jdk</span>1.<span class="hljs-number">6.0_26</span> <span class="hljs-constant">ARCH_DATA_MODEL</span>=<span class="hljs-number">64</span> <span class="hljs-constant">LANG</span>=<span class="hljs-constant">C</span> <span class="hljs-constant">ZIP_DEBUGINFO_FILES</span>=<span class="hljs-number">0</span> </code><ul style="" class="pre-numbering"><li>1</li></ul>

(2)修改运行命令、运行目录、环境
这里写图片描述
修改运行命令,Queens 是需要运行的class文件,你可以使用自己的类文件替换

<code class="hljs haml has-numbering"><span class="hljs-comment">/usr/application/tools/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg/gamma</span>
-<span class="ruby"><span class="hljs-constant">XX</span><span class="hljs-symbol">:StopInterpreterAt=</span><span class="hljs-number">1</span> -version <span class="hljs-constant">Queens</span></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

修改运行目录

<code class="hljs applescript has-numbering">/usr/<span class="hljs-type">application</span>/tools/openjdk/hotspot/make</code><ul style="" class="pre-numbering"><li>1</li></ul>

修改环境
这里写图片描述

<code class="hljs ruby has-numbering">**<span class="hljs-constant">LD_LIBRARY_PATH</span>** <span class="hljs-regexp">/usr/application</span><span class="hljs-regexp">/tools/openjdk</span><span class="hljs-regexp">/hotspot/build</span><span class="hljs-regexp">/linux/linux</span>_amd64_compiler2/jvmg
**<span class="hljs-constant">JAVA_HOME</span>** <span class="hljs-regexp">/usr/application</span><span class="hljs-regexp">/tools/openjdk</span><span class="hljs-regexp">/build/linux</span>-amd64-debug/j2sdk-image
**<span class="hljs-constant">CLASSPATH</span>** 
..<span class="hljs-symbol">:</span><span class="hljs-variable">$JAVA_HOME</span>/lib/dt.<span class="hljs-symbol">jar:</span><span class="hljs-variable">$JAVA_HOME</span>/lib/tools.<span class="hljs-symbol">jar:</span>/root/<span class="hljs-constant">Desktop</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

注意:这里要把Queens所在的目录添加到环境CLASSPATH里面。

3**、运行或调试源代码**
这里写图片描述

如果想调试源代码,可以找到HotSpot的入口java.c的main函数,并设置断点
这里写图片描述

编译运行的时间有点长,耐心等待即可。

Netty5源码分析(三) -- Channel如何注册OP_ACCEPT, OP_READ, OP_WRITE

抛开Netty,一个典型的Java NIO服务端开发需要做几件事: 1.  创建ServerSocketChannel,设置为非阻塞,并绑定端口 2. 创建Selector对象 3. 给Server...
  • ITer_ZC
  • ITer_ZC
  • 2014年09月19日 11:44
  • 4666

聊聊高并发(二十六)解析java.util.concurrent各个组件(八) 理解CountDownLatch闭锁

CountDownLatch闭锁也是基于AQS实现的一种同步器,它表示了“所有线程都等待,直到锁打开才继续执行”的含义。它和Semaphore的语意不同, Semaphore的获取和释放操作都会修改状...
  • ITer_ZC
  • ITer_ZC
  • 2014年11月11日 14:06
  • 2785

Java HotSpot VM Options

  • 2015年03月02日 10:00
  • 182KB
  • 下载

Java虚拟机hotspot源码分析之找门

最近研究JVM已然走火入魔了,下午看了两个小时,终于看出了一点端倪。像我这样Java学个半吊子,就开始研究JVM源码的人实在是奇葩的存在!!! 源码据说有50多万行,不过感觉也不是很多的样子...

Java -- Hotspot虚拟机调优与GC垃圾回收策略

(先扯扯Java,热热身) 论坛上,经常看到有些人讨论c、c++、java哪个更快,哪个更主流等的口水贴,吵的乐此不疲。其实个人感觉Java 1.6之后性能和开发效率都提高了不少,虽然不像直接编译成机...

Java对象创建、分配、布局、访问小析(HotSpot虚拟机)(一)

本文内容总结自周志明先生所编著的《深入理解Java虚拟机-JVM高级特性与最佳实践》此书的经典不必多说。本节内容是对象的创建.、分配的内容。 对象的创建 java对象的创建有几种方式呢(这里所说的ja...
  • zknxx
  • zknxx
  • 2017年05月09日 00:35
  • 354

深入Java虚拟机笔记(五):剖析HotSpot的Launcher

虽然HotSpot只是OpenJDK项目的一个功能子集,但在其中占据非常重要的地位 HotSpot目录下四大子目录: agent:包含Serviceability Agent的客户端的实现 ma...
  • jyxmust
  • jyxmust
  • 2017年05月22日 22:12
  • 743

HotSpot 虚拟机在 Java 堆中对象是如何创建、如何布局以及如何访问的?

Java内存区域与内存溢出异常1. 概述(为什么要去了解虚拟机是怎样使用内存的?) 2. 运行时数据区域(虚拟机中的内存是如何划分的?) 3. HotSpot 虚拟机对象探秘 (HotSpot...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java-调试hotspot
举报原因:
原因补充:

(最多只允许输入30个字)