java 有很强大的调试工具,我们有很多时候调试到jdk类的时候,发现看到不到局部变量,成员变量,值等情况,是因为jre发布的时候里面去掉了很多的调试信息,因为这些调试信息会占用内存,这是java为了提高性能,默认情况下去掉了这些调试信息。对于我们程序员,我们为了很方便的提高自己的水平和能力,我们很有必要再次编译jdk的src.zip下面的原代码,方便我们在eclipse IDE工具里面调试jdk的代码。
1 首先我们拷贝 JAVA_HOME\src.zip包到 某个地方,比方说 拷贝到
D:\srctmp\
2 解压D:\srctmp\src.zip 到 D:\srctmp\jdk1.6.0_20-src
3 列出 D:\srctmp\jdk1.6.0_20-src\下面的java文件到某个文件
dir /B /S /X d:\srctmp\jdk1.6.0_20-src\*.java > fileList-jdk1.6.0_20-src.txt
D:\srctmp>dir /B /S /X d:\srctmp\jdk1.6.0_20-src\*.java > fileList-jdk1.6.0_20-src.txt
4 编译源文件:
执行如下命令
D:\srctmp>"D:\dev\Java\jdk1.6.0_20\bin\javac" -verbose -nowarn -g -source 1.6 -target 1.6 -J-Xms512m -J-Xmx1024m -bootclasspath "D:\dev\Java\jdk1.6.0_20\jre\lib\rt.jar";D:\dev\Java\jdk1.6.0_20\jre\lib\jce.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\jsse.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\resources.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\charsets.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\deploy.jar -sourcepath jdk1.6.0_20-src -classpath jdk1.6.0_20-src -d out @fileList-jdk1.6.0_20-src.txt
注意 加入 -bootclasspath 确保我们可以正确的编译原代码。
编译后.class文件生成在
D:\srctmp\out 目录下面
5 拷贝 JAVA_HOME\jre\lib\rt.jar 到d:\srctmp\ 目录下面
用jar 命令解压rt.jar 到d:\srctmp\rt
jar -xvf rt.jar
6 将out下面编译的.class文件 全部拷贝到rt目录下进行覆盖,
7 重新打包rt目录
jar cvf rt.jar ./
8 拷贝到新的rt.jar 到 JAVA_HOME\jre\lib\目录,覆盖之前先进行备份。
完毕
原文参考 http://www.softwareengineeringsolutions.com/thoughts/Java-Debug-Build.htm
相关推荐
Only reports using debug canary builds will be accepted. Access canary builds by upgrading to either canary Magisk Manager: Canary Manager (Release) Canary Manager (Debug) For installation ...
一些重要的任务是: assembleDebug - Assembles all Debug builds.installDebug - Installs the Debug build.connectedAndroidTest - Installs and runs the tests for Debug build on connecteddevices.
Platform子项目包含诸如Compare、Help和Search等组件,而JDT则由UI、Core和Debug三个组件组成,用于Java开发。PDE子项目分为UI和Core,主要用于插件的开发和管理。 Eclipse提供了多个版本,每个版本都有特定的代号...
// Only log in debug builds } } ``` 这个例子中,`ReleaseTree`只在调试构建中记录日志,避免了在生产环境中泄露敏感信息。 总的来说,Timber.jar和Timber.arr(可能是一个AAR库,包含依赖)在4.6.0版本为...
关于Eclipse的版本,官方提供了多种构建版本,包括发布版(Release builds)、稳定版(Stable builds)、集成版(Integration builds)和每日构建版(Nightly builds)。发布版是最稳定,经过全面测试的版本;稳定版是几乎...
In summary, Groovy is a powerful and versatile language that builds upon the strengths of Java while introducing new features and paradigms. Whether you're looking to simplify your Java code, automate...
For Android, only debuggable builds will be annotated and wrapped with the debug logic. For java, you might want to disable it in your build.gradle file on release builds. The logged info include: ...
- **Java开发工具箱 (Java Development Toolkit, JDT)**: 包括User Interface (UI)、核心(Core)以及调试(Debug)等组件。 - **插件开发环境 (Plug-in Development Environment, PDE)**: 包括UI和Core等组件。 ####...
apks are nothing more than a zip file containing resources and compiled java. If you were to simply unzip an apk like so, you would be left with files such as classes.dex and resources.arsc. $ unzip...
- `builds`: 存放编译好的ExtJS文件,如`ext-all.js`和`ext-all-debug.js`。 3. **Bootstrap文件**:`bootstrap.js`是一个轻量级的文件,它的作用是帮助加载`ext-all.js`或`ext-all-debug.js`。这对于优化应用加载...
- `-debug`:打印调试信息。 - `-emacs`:生成无修饰的记录信息。 - `-logfile file`:指定日志输出文件。 - `-logger classname`:指定执行日志记录的类。 - `-listener classname`:添加项目监听器实例。 - `-find...
builds:压缩后的ExtJS代码,体积更小,更快; docs:开发文档; examples:官方演示示例; locale:多国语言资源文件; pkgs:ExtJS各部分功能的打包文件; resource:ExtJS所需要的CSS与图片文件; src:未...
"log_level"="debug" "worker_file"="c:\\jakarta-tomcat\\conf\\workers.properties" "worker_mount_file"="c:\\jakarta-tomcat\\conf\\uriworkermap.properties" ---end--- ``` - 这个脚本定义了ISAPI...
Creating Release Keys and Signing Builds 26 In this document 26 Introduction 27 Generating keys 27 Signing a build for release 28 Customization 29 In this document 29 Boot Screen Customization 29 ...
- **QA Must Test with Debug Builds**: QA团队必须使用调试版本进行测试,以便发现更深层次的问题。 - **Set Up a Symbol Store**: 设置符号存储库,方便调试时查看函数或类的具体信息。 - **Set Up a Source ...