openjdk编译和调试
2016-04-10 16:03
453 查看
1、环境:ubuntu12.04+gcc 4.6.3
目前还没有在mac上编译成功过
2、下载openjdk
http://openjdk.java.net
3、安装JDK7所需要的依赖包
4、编译脚本,会在openjdk的build目录下生成三个版本的java程序
5、使用生成的debug版本进行调试,由于在运行过程中,需要使用dlopen动态加载libjvm.so,这个libjvm.so中缺少调试信息,所以无法跟进动态链接库中的符号,解决方案是生成libjvm的调试信息,方法如下
这种方法将会在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
目前还没有在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
相关文章推荐
- Java的Arrays类
- BitTorrent协议java实现分析
- 20145231 《Java程序设计》第一次实验
- Java 中的 static 使用之静态变量
- Java - 待归类
- 找找 Spring Event 源码中各种设计模式的使用
- 20145240 《Java程序设计》第一次实验报告
- JAVAssist---动态改动注解
- maven+srping+springmvc+mybatis的环境搭建的每一步和代码
- myeclipse无法创建jsp页面
- 20145320《Java程序设计》第一次实验报告
- ASA用ASDM管理时报unable to launch device manage xxxx.xxx.xxx.xxx
- 20145311 实验一 "Java开发环境的熟悉"
- 20145227 《Java程序设计》第6周学习总结
- java中的接口和抽象类
- 20145210姚思羽《Java程序设计》实验一实验报告
- struts2 action
- 【java】关于static关键字在重写父类方法时的作用
- JAVA的Class.forName(clsName)ClassLoader的loadClass(clsName)的区别
- 1章 初识Java