java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而却存在如下两个问题。

a.debug时查看变量十分麻烦

b.sun.*包中的类没有提供API文档及源码

如何解决这两个问题呢?

一.debug时查看rt.jar中的变量

因为oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小,因此即使rt.jar包的source attachement指定了jdk安装包下的src.zip,也不便于调试,会出现诸如不能查看调试时的变量等问题。若想正常调试jdk,就只能重新编译src.zip,下面介绍下编译src.zip的方法。

1.在eclipse中新建一个java项目"jdk",然后在src目录上导入"Archive File",选择源码src.zip导入,导完目录结构如下(网上有说不用管报错,实际上这里的报错一般都是一些转型的问题,直接修复即可)

2.右键项目export...,然后导出为jar包,起名为rt_debug.jar:



3.修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面


4.最后再查看debug变量,可以看到变量值了


二.sun.*包中的类没有提供API文档及源码

我只能想到从Open JDK官网下载Open JDK源码,并从中获取sun源码包,加到我创建的jdk工程中并修复报错,然后再导出为jar包(接下来的步骤同debug时查看rt.jar中的变量一样)。

Open JDK源码包下载地址:

Open JDK6:http://download.java.net/openjdk/jdk6/

Open JDK7:http://download.java.net/openjdk/jdk7/

Open JDK8:http://download.java.net/openjdk/jdk8/

单个查看源码及javadoc地址:http://www.docjar.com/html/api/sun/

转载自: https://bijian1013.iteye.com/blog/2302520

怎么对jdk核心包进行跟踪调试,并查看调试中的变量值相关推荐

  1. VC代码的编写和调试---编写易于调试的VC代码

    转自:http://www.vcgood.com/forum_posts.asp?TID=1692&PN=1 一 程序的设计 要避免错误,首先要从好的设计开始.对于程序的设计,需考虑到程序的两 ...

  2. JDK核心源码深入剖析(synchronized和ConcurrentHashMap)

    JDK核心源码深入剖析(synchronized和ConcurrentHashMap) JDK核心源码深入剖析 1 同步锁synchronized追本溯源 1.1 synchronized场景回顾 1 ...

  3. JAVA_Java常用核心包(概念)

    20150802 Created By BaoXinjian 一.Java常用包 Java各种核心包 1. java.lang: java 的核心类库,包含了运行java 程序必不可少的系统类,如基本 ...

  4. Vert.x学习笔记(一) Vert.x 核心包

    Vert.x是一个事件驱动的JVM上的框架,可以帮助我们构建现代.灵活.可扩展的程序.Vert.x有多种语言的版本,可以用在Java.Kotlin.Scala.Groovy.Ruby等语言上.当然现在 ...

  5. 帝国cms万能通用api二次开发核心包使用说明

    简介 帝国cms万能通用api二次开发核心包是一款可以用地对帝国cms进行二次开发,可进行开发微信小程序.百度小程序.支付宝小程序.轻应用.苹果ios安卓android.其他营销插件的二次开发核心包. ...

  6. gnujaxp.jar与struts2中的xwork核心包冲突

    在做项目的时候,项目启动报了以下的错误 Caught Exception while registering Interceptor class org.apache.struts2.intercep ...

  7. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析

    R语言有很多包可以做机器学习(Machine Learning)的任务.机器学习的任务主要有有监督的学习方式和无监督的学习方式. 有监督学习:在正确结果指导下的学习方式,若是正确结果是定性的,属于分类 ...

  8. java加密与解密-核心包中的部分API(2)

    主要是介绍java安全框架的核心包中的部分API作用 java.Security包 ​ java.security包主要用于为安全框架提供类和接口 Provider类 Provider类实现了java ...

  9. springside4配置环境时无法下载到两个核心包

    最近在搭建 springside4开发环境,配置环境时无法下载到两个核心包: 查看官方文档,发现江南白衣已经对这个问题做了重大提示"要自己build" 先build test 里的 ...

最新文章

  1. pyinstaller打包生成的exe文件(并设置运行时静默)
  2. 你不懂的JS学习笔记(作用域和闭包)
  3. linux 批量处理 dos2unix
  4. 算法经典书籍--算法设计与分析基础
  5. java 清空jframe_java – 在新游戏中清除我的JFrame和JPanel
  6. linux如何使用物理内存_10 张图解再谈 Linux 物理内存和虚拟内存
  7. maven 如何给web项目添加jar包依赖
  8. python的史蒂芬加速迭代法_如何将Pandas迭代速度加快150倍?
  9. 电脑计算机d盘有用吗,d盘不见了,教您电脑d盘不见了怎么解决
  10. android layoutparams,Android LayoutParams用法解析
  11. 腾控Multiprog 使用问题 (持续更新)
  12. 【材料力学】基于Matlab APP Designer 开发的绘制静定梁剪力、弯矩与挠曲线的软件
  13. 英语在线教育机构争战AI风口,为何雷声大雨点小?
  14. [DAX] IF函数
  15. Wangle源码分析:Service
  16. HTML中<meta>标签的name属性都有哪些——标准元数据名称
  17. 逻辑思维语音01——麦当劳
  18. 你是如何学习Java的?
  19. 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》
  20. [-7170]:Bakres failed to connect DMAP

热门文章

  1. Revit二次开发--Hello World
  2. Spring核心技术(七)——Spring容器的扩展
  3. 静态程序分析chapter1 - 概述和两个重要步骤
  4. 前端常用插件、工具类库汇总(上)
  5. 【ZooKeeper Notes 30】ZooKeeper与Diamond有什么不一样
  6. 利用ctrl+z停掉任务再kill的暴力方法关闭ctrl+c ctrl+v都关不了的任务
  7. 求助:国际化中资源文件不在classpath中的问题
  8. NSTableView使用笔记(一)
  9. javascript权威指南学习笔记
  10. VC遍历窗体控件的实现