您的位置:首页 > 编程语言 > Java开发

openjdk编译和调试

2016-04-10 16:03 453 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: