Linux下在Eclipse中调试Hotspot虚拟机源码

来源:互联网 发布:mac os x.dmg原版镜像 编辑:程序博客网 时间:2024/06/05 04:42

  使用已经编译好的OpenJDK来调试,如何编译OpenJDK源码,请参看 Linux下编译OpenJDK源码以及在Eclipse中调试Hotspot虚拟机 http://blog.csdn.net/leonliu06/article/details/78495035

一、导入HotSpot源码到Eclipse

    HotSpot是一个C++项目,其导入过程如下:
1. File –> import –> C/C++ –> Existing Code as Makefile Project下选择:/home/leon/OpenJDK7/jdk7u-dev/hotspot –> next
2. 填一个Project name, 如HotSpot。然后点击Browse将Hotspot路径填入Existing Code Location。下面的Toolchain for Indexer Settings选择Linux GCC。
3. 点击完成。

二、设置Debug Configuration

  1. 项目上右健Debug As –> Debug Configurations…打开Debug Configurations弹窗
  2. 弹窗中右健C/C++Application –> New –> 在右侧出来一个新的lauch configuration
  3. 在Main选项卡中C/C++ Application下选择启动类:/home/leon/OpenJDK7/jdk7u-dev/build/linux-amd64/hotspot/outputdir/linux_amd64_compiler2/jvmg/gamma,因为使用的是已经编译好的OpenJDK,这里不在Eclipse里编译,所以在下面选择Disable auto build
  4. Arguments选项卡中Program arguments输入-version 或者 要执行的类,gamma会从Eclipse中的CLASSPATH变量中找这个类,这里当前路径指项目根路径即/home/leon/OpenJDK7/jdk7u-dev/hotspot
  5. Environment选项卡:配置环境变量如下

    # gamma启动器读入java类的路径CLASSPATH=.:/home/leon# 这里使用自己编译好的JDK,如果使用别的JDK,会报错如下# JAVA_HOME must point to a valid JDK/JRE to run gamma# Error: could not find libjava.so# Error: could not find Java 2 Runtime Environment.JAVA_HOME=/home/leon/OpenJDK7/jdk7u-dev/build/linux-amd64/j2sdk-server-image# 通过LD_LIBRARY_PATH来设置libjava.so的位置,启动器优先加载编译好的libjava.so。hotspot jvm的代码都编译链接在libjava.so这个文件里。LD_LIBRARY_PATH=/home/leon/OpenJDK7/jdk7u-dev/build/linux-amd64/hotspot/outputdir/linux_amd64_compiler2/jvmg# GCC的环境变量,GCC会从这个路径下找包含的头文件CPLUS_INCLUDE_PATH=/home/leon/OpenJDK7/jdk7u-dev/jdk/src/share/bin
  6. Common选项卡: Displaying in favorites menu勾选Debug –> Apply

三、开始调试

  点击Debug开始调试,代码将停在/home/leon/OpenJDK7/jdk7u-dev/hotspot/src/share/tools/launcher/java.c文件的main函数处。

阅读全文
0 0
原创粉丝点击