Centos7.7下调试hotspot的eclipse与gcc环境搭建

我尝试了两种调试环境,一种是clion(2019.3.5)环境,一种是eclipse(2020.03)环境。说实话clion方便些,少一个安装与运行cmake的步骤,但这ide只能试用30天,那我就还是麻烦点用eclipse吧,毕竟没有付费的烦恼。
关于clion的环境可参考,虽然他是mac系统,但与centos操作差不多。https://blog.csdn.net/wd2014610/article/details/81703203


先配置好C语言的环境变量,比如我的是:

export C_INCLUDE_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/:/usr/local/include:/usr/include/gnu/:/usr/include/
export CPLUS_INCLUDE_PATH=/usr/include/c++/4.8.5:/usr/include/c++/4.8.5/x86_64-redhat-linux/:/usr/include/c++/4.8.5/backward/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/:/usr/local/include/:/usr/include/gnu/:/usr/include/

把上面的代码放到/etc/profile, source通过生效一下。

下面是搭eclipse环境步骤:
1.安装cmake,以便生成eclipse的makefile工具。yum install cmake
 
我安装好后的版本是cmake version 2.8.12.2 。看eclipse也可以创建cmake的工程,但多次尝试均未能正常编译,原因未知。

2.复制openjdk10 src文件夹下的hotspot文件夹到某目录下。进入hotspot目录,执行如下2命令:
touch CMakeLists.txt
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=debug

3.打开eclipse,选择菜单File → New →other  -→C/C++ →Makefile Project with
在Code Location输入框选择刚才的hotspot文件夹。工程名自动生成为hotspot。




工程结构如下:




然后配置hotspot项目的Debug Config,比较关键:
第一页注意两处:
C/C++ Application选择前面文中debug模式编译好的jdk下的bin/java可执行文件,

下面选Disable to build



第二页是参数(Arguments), 就录入个-version。(查java版本,简单)


第四页是Debugger, 已经安装好了gdb,这里就是gdb。但要注意.gdbinit文件的内容是:


handle SIGSEGV nostop noprint pass


第五页是Source,这里需要把源码加进来。

Add→Project -Path Relative to Source Pold ->刚建的hotspot项目

如下图:



最后为了检验我们确实搭好了调试环境,打个断点试试。eclipse下打开thread.cpp为文件,搜索::create_vm,在 3643行加个断点。最后debug,就可以看到效果了:


这里相当于在控制台执行了java -version

如果我们要执行我们自己的java程序,怎么做呢?

先在一个java eclipse建一个普通的java工程,写一个测试程序。

package test;

public class Test {

	public static void main(String[] args) {
		Integer n=3;
		System.out.println(n);
		n=10;
		System.out.println(n);

	}

}
我们再进入这个工程所在文件夹下的bin目录 ,把下面的文件复制到c eclipse的hotspot工程下,这样hotspot工程就可以找到我们的Test.java了。

把Debug配置页里的Arguments改成test.Test ,再debug,是不是就能看到Test的执行结果了?

文/中中 浏览次数:0次   2020-03-30 17:18:24

相关阅读

微信扫描-捐赠支持
加入QQ群-技术交流

评论: