Java虚拟机原理分析之Win7下VS2010编译OpenJDK8与单步调试HotSpot VM过程详细记录

上周五偶然翻到本讲JVM原理的书,看着觉得很过瘾,居然因此错过了晚饭,很久没这么酣畅淋漓过了。然而过瘾之余,看不到JVM源码、也无法调试,总觉得未能尽兴。Linux的老爸Linus大牛曾说“Talk is cheap, show me the code”,光看书,总觉得像在吃别人已经吃剩下的饭,远不如自己动手看看源码、调试跟一跟来得实在。遂决定在Windows平台上自己动手编译一个Java虚拟机,并且要求能调试。

本文详细记录了Windows平台下使用VS2010编译x86版本的Java虚拟机客户端的全过程。包括编译前的准备工作、配置与编译过程与错误排除、将Hotspot VM源码导入VS2010 IDE实现图形界面管理,并在其中下断点调试的整个过程。

安装VS2010及SP1补丁

OpenJDK官方使用VS2010构建Windows平台下的JVM和JDK,并且在其配置脚本中也有一些针对VS2010“硬编码”的内容,如捕捉其编译器的版本信息。为了保证兼容性和编译的方便性,我们也入乡随俗,使用VS2010。

值得注意的是,为了顺利编译VS2010,需要为VS2010安装SP1补丁。之后最好再通过Windows的更新系统将所有VS2010相关的补丁打齐,然后开始编译。我安装的是VS2010中文版,在之后的编译过程中要改一些配置(OpenJDK的配置脚本对中文支持不好),因此如果直接安装英文版的VS2010,编译过程会更顺利些。

图中正在给VS2010打补丁。从安装VS2010再到安装VS2010 SP1补丁包,然后在线更新补丁,耗时会比较长,这段时间可以并行下面的操作。

2017-12-18_165619

安装Cygwin

由于OpenJDK在配置阶段使用了bash脚本和一些gnu工具集,要想在Windows系统中完成这些步骤,就需要Cygwin的帮助了。访问https://www.cygwin.com/网站,下载对应的Cygwin版本。由于我的开发环境是Win2k8 R2,于是下载了x64版本的。

Cygwin的安装比较傻瓜化,其中有一步是选择镜像,我选择的是kernel.org的镜像,速度还行。接下来是定制需要安装的工具,在默认的基础上,我们加装如下工具:

Binary Name   Category        Package        Description  
================================================================  
ar.exe        Devel            binutils      The GNU assembler, linker and binary utilities  

make.exe      Devel            make          The GNU version of the 'make' utility built for CYGWIN

m4.exe        Interpreters     m4            GNU implementation of the traditional Unix macro processor  

cpio.exe      Utils            cpio          A program to manage archives of files  

zip.exe       Archive          zip           Package and compress (archive) files  

unzip.exe     Archive          unzip         Extract compressed files in a ZIP archive  

free.exe      System           procps        Display amount of free and used memory in the system  
================================================================  

选定工具后就是漫长的等待下载过程了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值