标签:opt bin java 程序运行 jdk src 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)方法
标签:opt,bin,java,程序运行,jdk,src,openjdk,调试 来源: https://blog.csdn.net/tzh476/article/details/99708510
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。