1. GDB中的调试。
按照前述在hotspot目录下 make jvmg jvmg1 即可生成带有调试符号的文件。进入所生成的 jvmg 目录中,执行
./hotspot -gdb -classpath YOURPATH CLASSNAME
即可进行gdb调试。
2. Netbeans中的调试。
推荐使用 netbeans 7.0.1。我使用的系统是 Ubuntu 14.04 64 bit 。
项目生成命令是:
${MAKE} -f Makefile jvmg ALT_BOOTDIR=/home/nightwish/program_files/work/jdk1.6.0_20 ARCH_DATA_MODEL=64 LANG=C ZIP_DEBUGINFO_FILES=0
对于64位机器,其中 ARCH_DATA_MODEL=64 是不能少的。另外如果不指定ZIP_DEBUGINFO_FILES=0,那么需要在编译完成后到jvmg目录下面执行unzip libjvm.diz 解压出调试需要的符号信息,否则不能调试。生成时netbeans会默认在一个 /java/.../linux-i586 的目录下查找自举 jdk ,为止创建一个软链接指向自举 jdk 即可。
项目运行命令是:
/home/nightwish/projects/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg/gamma -XX:StopInterpreterAt=1 -version
环境变量:
LD_LIBRARY_PATH /home/nightwish/projects/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg
JAVA_HOME /home/nightwish/program_files/work/jdk1.6.0_45
CLASSPATH .:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
之后点击调试,即可在 netbeans 中调试 hotspot