Linux下在Eclipse中调试Hotspot虚拟机源码
Linux下在Eclipse中调试Hotspot虚拟机源码
·
使用已经编译好的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
- 项目上右健Debug As –> Debug Configurations…打开Debug Configurations弹窗
- 弹窗中右健C/C++Application –> New –> 在右侧出来一个新的lauch configuration
- 在Main选项卡中C/C++ Application下选择启动类:/home/leon/OpenJDK7/jdk7u-dev/build/linux-amd64/hotspot/outputdir/linux_amd64_compiler2/jvmg/gamma,因为使用的是已经编译好的OpenJDK,这里不在Eclipse里编译,所以在下面选择Disable auto build
- Arguments选项卡中Program arguments输入-version 或者 要执行的类,gamma会从Eclipse中的CLASSPATH变量中找这个类,这里当前路径指项目根路径即/home/leon/OpenJDK7/jdk7u-dev/hotspot
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
- Common选项卡: Displaying in favorites menu勾选Debug –> Apply
三、开始调试
点击Debug开始调试,代码将停在/home/leon/OpenJDK7/jdk7u-dev/hotspot/src/share/tools/launcher/java.c文件的main函数处。
更多推荐
已为社区贡献3条内容
所有评论(0)