`

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

阅读更多

        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/

  • 大小: 6.4 KB
  • 大小: 5.7 KB
  • 大小: 30.1 KB
  • 大小: 54.6 KB
  • 大小: 7.2 KB
  • 大小: 7.9 KB
分享到:
评论

相关推荐

    查看JDK中变量的值, debug JDK

    当我们调试Java程序时,我们无法查看JDK源代码中的变量的值,此文档解决了这个问题

    jdk源码调试重编译rt.jar包

    关于调试jdk源码显示源码变量值的rt.jar重编译包

    jdk1.8.0_101调试包

    解决调试jdk源码时局部变量值看不到问题,下载后把此包加入JAVA_HOME\jre\lib\endorsed下并把词包导入eclipse中即可进行调试了。

    自己重新编译的jdk源码jar包

    我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变量的值。这样的话,如果在debug的时候查看局部变量, 就必须自己编译相应的源码使之拥有调试信息。要达到这个目的,一是...

    jdk带调试信息的jar文件(基于jdk1.7)

    eclipse中打断点时,不能查看jdk源码变量中的值,需要重新对jdk的源码进行编译。编译之后,将jar文件放到endorsed下。

    解决调试JDK源码时,不能查看变量的值问题

    下面小编就为大家带来一篇解决调试JDK源码时,不能查看变量的值问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java查看sun包源码-rt_debug:将jdk的源码进行重新编译,用于局部变量的调试

    jdk提供的rt.jar进行debug调试时不能查看到局部变量的值,这是因为sun对rt.jar的类编译时,去除了调试信息,所以我们必须重新编译jdk源码并打包成rt.jar 编译步骤 解压jdk安装目录下的src.zip文件 遍历src目录下的...

    JDK1.7 WIN_X86可debug版part1

    本jdk是本人在Win7 X86环境自己编译的,可以断点调试看变量值,一般jdk虽然能打断点但看不到变量值的,

    使用 Eclipse 调试 Java.doc

    方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。 4、 改变变量值 代码停在了断点处,...

    rt_debug_1.8.jar包

    JDK1.8源码重新打包,支持调试JDk源码时显示变量的值

    JDK1.7 WIN_X86可debug版part02

    本jdk是本人在Win7 X86环境自己编译的,可以断点调试看变量值,一般jdk虽然能打断点但看不到变量值的

    JDK1.7 WIN_X86可debug版part3

    本jdk是本人在Win7 X86环境自己编译的,可以断点调试看变量值,一般jdk虽然能打断点但看不到变量值的,

    JDK:多个JDK版本的源代码(1.61.71.81.91011121314 JDK的src.zip),仅用于学习; “ rt_debug.jar”可用于调试-Source code learning

    JDK原始代码重新打包,支持调试JDk二进制时显示变量的值: rt_debug_1.7.jar: : rt_debug_1.8.jar: : JDK原始码【1.9】,预设系统,JShell,集合工厂方法等(2017-10-07)。 JDK原始【1.7】,添加JDK1.7...

    rt_debug_1.7.jar

    JDK1.7源码重新打包,支持调试JDk源码时显示变量的值

    rt_debug_1.8.jar

    JDK1.8源码重新打包,支持调试JDk源码时显示变量的值

    疯狂html5+css3+javascript完整版第二部分

    3 第18章的离线Web应用需要Tomcat服务器 建议安装Apache的Tomcat7 0 20 不要使用安装文件安装 而是采用解压缩的安装方式 安装Tomcat需要增加JAVA HOME环境变量 环境变量值为JDK安装路径 ">疯狂...

    疯狂html5+css3+javascript完整版

    本书中的程序在以下环境中调试通过: (1) 本书很多HTML 5、CSS 3代码必须在高版本的浏览器中才能看到效果。建议读者安装Opera 11.60、Firefox 10.0...安装Tomcat需要增加JAVA_HOME环境变量,环境变量值为JDK安装路径。

    pro_android_cpp_with_the_ndk.pdf

    1.1.1 在Windows平台上下载并安装JDK开发包 1.1.2 在Windows平台上下载并安装ApacheANT 1.1.3 在Windows平台上下载并安装AndroidSDK 1.1.4 在Windows平台上下载并安装Cygwin 1.1.5 在Windows平台上下载并安装Android...

    疯狂的HTML5javaScript讲义

    本书中的程序在以下环境中调试通过: (1) 本书很多HTML 5、CSS 3代码必须在高版本的浏览器中才能看到效果。建议读者安装Opera 11.60、Firefox 10.0...安装Tomcat需要增加JAVA_HOME环境变量,环境变量值为JDK安装路径。

Global site tag (gtag.js) - Google Analytics