注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

断尘居

温柔的男人像海洋。

 
 
 
 
 

日志

 
 

图文解析在Linux下搭建Hotspot JVM源码调试环境 | How to build Hotspot JVM debug environment on Linux  

2014-11-19 17:17:53|  分类: JVM/ HotSpot |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        在前面的文章中博主已经介绍过如何Linux下编译OpenJDK7源码,现继续介绍如何在Linux下搭建基于eclipse IDE的Hotspot源码调试环境。鉴于网上关于JVM源码调试方面的文章寥寥无几并且内容参差不全,本文将把博主摸索数天的经验及成果以图文形式详细介绍Hotspot的debug过程。

 # 软件环境丨Software Environments

  • OS:CentOS 6.5
  • JDK Version:openjdk-7u40-fcs-src-b43-26_aug_2013
  • IDE:eclipse-cpp-luna-SR1-linux-gtk-x86_64

 # 操作步骤丨Operating Steps

Step 1、首先解压JDK源码包至/usr/local目录,然后启动eclipse,依次选择File > New > Makefile Project with Existing Code(如果没有则在Other里找)
图文解析在Linux下搭建Hotspot JVM源码调试环境 - Bob.Z - 断尘居

 

Step 2、定位到项目名右键 > Properties >C/C++ Build需要修改两个地方:
  • 将Builder里口Use default build command的对勾去掉,填入参数ARCH_DATA_MODEL=64
  • 将Build locatio的Build directory追加上/make,最终是${workspace_lc:/hotspot}/make,目的是告诉make编译器到该目录下寻找编译文件Makefile。
图文解析在Linux下搭建Hotspot JVM源码调试环境 - Bob.Z - 断尘居

 

Step 3、选择菜单栏Project > Build Project,如果运气不差的话会看到已经开始build了,沏杯咖啡慢慢等吧(首次build大概需要10-20m)。
图文解析在Linux下搭建Hotspot JVM源码调试环境 - Bob.Z - 断尘居
 

 部分LOG信息:

make[4]: Entering directory `/usr/local/openjdk/hotspot/build/linux/linux_amd64_compiler2/fastdebug'
echo "**NOTICE** Dtrace support disabled: "/usr/include/sys/sdt.h not found""
**NOTICE** Dtrace support disabled: /usr/include/sys/sdt.h not found
make[4]: Leaving directory `/usr/local/openjdk/hotspot/build/linux/linux_amd64_compiler2/fastdebug'
All done.
make[3]: Leaving directory `/usr/local/openjdk/hotspot/build/linux/linux_amd64_compiler2/fastdebug'
cd linux_amd64_compiler2/fastdebug && ./test_gamma
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
OpenJDK 64-Bit Server VM (build 24.0-b56-internal-fastdebug, mixed mode)

 1. A1 B5 C8 D6 E3 F7 G2 H4 
 2. A1 B6 C8 D3 E7 F4 G2 H5 
 3. A1 B7 C4 D6 E8 F2 G5 H3 
 4. A1 B7 C5 D8 E2 F4 G6 H3 
 5. A2 B4 C6 D8 E3 F1 G7 H5 
 6. A2 B5 C7 D1 E3 F8 G6 H4

 -- 此处略去N行------


 Using java runtime at: /usr/java/jdk1.7.0_67/jre
make[2]: Leaving directory `/usr/local/openjdk/hotspot/build/linux'
make[1]: Leaving directory `/usr/local/openjdk/hotspot/make'
cd /usr/local/openjdk/hotspot/make; \
    make BUILD_FLAVOR=fastdebug VM_TARGET=fastdebug1 generic_build1 
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
INFO: STRIP_POLICY=min_strip
INFO: ZIP_DEBUGINFO_FILES=1
make[1]: Entering directory `/usr/local/openjdk/hotspot/make'
mkdir -p /usr/local/openjdk/hotspot/build/linux
No compiler1 (fastdebug1) for ARCH_DATA_MODEL=64
make[1]: Leaving directory `/usr/local/openjdk/hotspot/make'
make BUILD_FLAVOR=fastdebug VM_SUBDIR=fastdebug \
      EXPORT_SUBDIR=/fastdebug \
      generic_export
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
INFO: STRIP_POLICY=min_strip
INFO: ZIP_DEBUGINFO_FILES=1
make[1]: Entering directory `/usr/local/openjdk/hotspot/make'
make[1]: Nothing to be done for `generic_export'.
make[1]: Leaving directory `/usr/local/openjdk/hotspot/make'

16:02:09 Build Finished (took 8s.216ms)

Step 4、编译成功之后就可以测试了,需配置如下几步:

  • 点选菜单栏Run > Debug Configurations > New launch configuration,在C/C++ Application里填入/usr/local/openjdk/hotspot/build/linux/linux_amd64_compiler2/fastdebug/gamma
    Project选择当前项目。
  • 在Argument tab页里Program arguments填入-version
  • 在Environment tab页里Environment variables to set填入JAVA_HOME | /usr/java/jdk1.7.0.67
  • Common tab页里勾选Debug
图文解析在Linux下搭建Hotspot JVM源码调试环境 - Bob.Z - 断尘居

 

配置完毕后,点击Debug即可进入调试模式,Hotspot内部一览无余,awesome work!

图文解析在Linux下搭建Hotspot JVM源码调试环境 - Bob.Z - 断尘居

 


 # 可能遇到的问题丨The Possible Problems

  • Q1

    /usr/local/openjdk/hotspot/build/linux/linux_i486_compiler2/fastdebug/gamma: error while loading shared libraries: libjvm.so: cannot open shared object >file: No such file or directory

    解决:将目录/usr/local/openjdk/hotspot/build/linux/linux_i486_compiler2/fastdebug添加到/etc/ld.so.conf里,然后执行ldconfig使其生效。

  • Q2

    Error: could not find libjava.so
    Error: could not find Java 2 Runtime Environment.

    解决:source env.sh即可,或者手动export JAVA_HOME变量。

  • Q3

    Missing separate debuginfo for /usr/local/openjdk/hotspot/build/linux/linux_i486_compiler2/fastdebug/libjvm.so
    Try: yum —disablerepo=’‘ —enablerepo=’-debug*’ install /usr/lib/debug/.build-id/64/0d974a66a42a8b80f92c86b14c7e53f5a7c643.debug
    [Thread debugging using libthread_db enabled]
    Quit
    Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.149.el6.i686

    解决:将/etc/yum.repos.d/CentOS-Debuginfo.repo中改成enable=1


- EOF -

日志格式 - Bob.Z - 断尘居
 文章作者:Bob.Z 编写时间:2014-11-19
 E-mail:zhaohevip@gmail.com 最后修正:2014-11-20
 申明:本文章版权完全断尘居博主所有,转载请在本文底部留言并注明本文链接。

  评论这张
 
阅读(3240)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017