openjdk编译和调试

1、环境:ubuntu12.04+gcc 4.6.3

目前还没有在mac上编译成功过

2、下载openjdk

http://openjdk.java.net

3、安装JDK7所需要的依赖包

sudo apt-get build-dep openjdk-7  

4、编译脚本,会在openjdk的build目录下生成三个版本的java程序

#!/bin/sh
#!/bin/bash

export LANG=C
export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386/	
export ALLOW_DOWNLOADS=true	#是否需要自动下载,jaxp,jaws可以自动下载
export SKIP_DEBUG_BUILD=false	#是否跳过编译debug版
export SKIP_FASTDEBUG_BUILD=false	#是否跳过编译fastdebug版
export DEBUG_NAME=debug
unset CLASSPATH
unset JAVA_HOME

make sanity && make all_debug


5、使用生成的debug版本进行调试,由于在运行过程中,需要使用dlopen动态加载libjvm.so,这个libjvm.so中缺少调试信息,所以无法跟进动态链接库中的符号,解决方案是生成libjvm的调试信息,方法如下

cd hotspot/make

export LANG=C
export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386/	
export ALLOW_DOWNLOADS=true	#是否需要自动下载,jaxp,jaws可以自动下载
export SKIP_DEBUG_BUILD=false	#是否跳过编译debug版
export SKIP_FASTDEBUG_BUILD=false	#是否跳过编译fastdebug版
export DEBUG_NAME=debug
unset CLASSPATH
unset JAVA_HOME
make all_debug

这种方法将会在 hotspot/build目录下生成linux/linux_i486_compiler2/jvmg,进行调试的时候,只需要使用./hotspot -gdb


6、如果在编译中有任何问题,可详细参考

http://blog.csdn.net/hengyunabc/article/details/16912775

http://blog.csdn.net/unei66/article/details/26481191




你可能感兴趣的:(openjdk编译和调试)