本文地址:http://www.cnblogs.com/myresearch/p/ide-buildhotspot.html,转载请注明源地址。
在阅读OpenJDK源码的过程中,经常需要运行、调试程序来帮助理解。我们现在已经可以编译出一个调试版本HotSpot虚拟机,禁用优化,并带有符号信息,这样就可以使用GDB来进行调试了。许多对虚拟机了解比较深的开发人员确实就是直接使用GDB加VIM编辑器来开发、修改HotSpot的,不过相信大部分读者更倾向于在IDE环境而不是纯文本的GDB下阅读、跟踪HotSpot源码,在上篇文章中已经介绍过如何在CentOS6.5上编译OpenJDK7源码,现继续介绍如何在Linux下搭建基于eclipse的Hotspot源码调试环境。
软件环境
- OS:CentOS 6.5
- JDK Version:openjdk-7u6-fcs-src-b24-28_aug_2012
- IDE:eclipse-cpp-kepler-SR2-linux-gtk-x86_64
下载eclipse, 地址: http://www.eclipse.org/cdt/downloads.php,注意eclipse 支持 C/C++的版本。
我下载的是eclipse-cpp-kepler-SR2-linux-gtk-x86_64.tar.gz
具体操作
Step 1:首先解压JDK源码包,启动eclipse,依次选择File
> New
> Makefile Project with Existing Code
接着出现下面的界面:
Step 2:定位到项目名右键
> Properties
>C/C++ Build
需要修改两个地方:
- 将Builder里口Use default build command的对勾去掉,填入参数
ARCH_DATA_MODEL=64
- 将Build location的Build directory追加上/make,最终是${workspace_loc:/hotspot}/make,目的是告诉make编译器到该目录下寻找编译文件Makefile。
Step 3:选择菜单栏Project
> Build Project
,看到已经开始build了,午休一下吧(首次build大概需要10-20m)。
部分LOG信息:
……
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 `/home/jvm/opt/openjdk/hotspot/make‘
make[1]: Nothing to be done for `generic_export‘.
make[1]: Leaving directory `/home/jvm/opt/openjdk/hotspot/make‘
02:01:39 Build Finished (took 23s.540ms)
Step 4:编译成功之后就可以测试了,需配置如下几步:
- 点选菜单栏Run > Debug Configurations > New launch configuration,在C/C++ Application里填入/home/jvm/opt/openjdk/hotspot/build/linux/linux_amd64_compiler2/fastdebug/gamma
- Project选择当前项目。
- 在Argument tab页里Program arguments填入-version
- 在Environment tab页里Environment variables to set填入JAVA_HOME | /application/java/jdk
- 在Common tab页里勾选Debug
配置完毕后,点击Debug即可进入调试模式
参考资料
《深入java虚拟机》