openjdk调试环境搭建和程序运行

参考:
https://blog.csdn.net/faadfafasd/article/details/50539615
https://blog.csdn.net/tjiyu/article/details/53725247
https://my.oschina.net/haogrgr/blog/414825

1.导入项目到eclipse的选项:
File-> New -> Existing Code as Makefile Project

在界面中:
Existing Code Location:/opt/openjdk/hotspot
Toolchain:选Linux GCC,然后按Finish.

配置/opt/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java
右键工程 -> Debug As -> Debug Configurations -> 右键左边的C/C++ Application -> New -> 进入Main选项卡;

使用"/opt/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java Test"可以运行编译后的字节码;
/opt/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java为编译后的openjdk的入口,不再在eclipse中每次都使用源码来编译hotspot源码,勾选:Disable auto build

2.切换到Arguments选项卡,配置com.hotspot.test/Test0,【编译后的java文件】运行的参数,即要执行的类

3.在envirement配置CLASSPATH:Test0所在目录,我这里新建一个项目HotspotTest,不包括包名 和 JAVA_HOME 编译生成的jdk所在目录
CLASSPATH=.:/home/tzh/eclipse-workspace/HotspotTest/bin
JAVA_HOME=/opt/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/

4.增加调试参数,使用命令行如下:
/opt/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation Test

在eclipse中配置:上面的Arguments选项卡填写如下:
-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation com.hotspot.test/Test0

5.启动:

1./opt/openjdk/jdk/src/share/bin/main.c的 main(int argc, char **argv) 为入口

2.调用了/opt/openjdk/jdk/src/share/bin/java.c的JLI_Launch方法:
	 设置了jvm的参数,如-XX:+UnlockDiagnosticVMOptions  -XX:+PrintCompilation com.hotspot.test/Test0等

3.调用/opt/openjdk/jdk/src/solaris/bin/java_md_solinux.c的pthread_create新建一个线程
	 并调用pthread_join(tid, &tmp)等待该线程

4.启动后在新线程

1./usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c调用了THREAD_SETMEM (pd, result, CALL_THREAD_FCT (pd)),pd保存了各种信息,包含了/opt/openjdk/jdk/src/share/bin/java.c的JavaMain方法

2./opt/openjdk/jdk/src/share/bin/java.c的int JNICALL JavaMain(void * _args)方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值