调试Java源代码时变量的值无法追踪怎么办?

问题:调试Java源代码时,只能看到源代码,却无法查看源代码中的变量的即时值

原因:jre为了节省空间,在打包时去掉了class文件中的调试信息。

思路:使用jdk里的src.zip源码重新编译生成完整的带有调试信息的class文件

做法:

1、新建一个Java Project

2、解压缩src.zip,把里面的java和javax两个文件夹复制粘贴到工程里作为source

3、在Eclipse中,打开window/preferences/java/compiler/errors or warnings/deprecated and restricted API/forbidden reference改成warning,去掉对sun等包的依赖确实产生的编译错误。

4、使用winrar打开jre/lib/rt.jar,将工程编译出来的class目录下的java和javax两个文件粘贴到rt.jar里覆盖。

5、使用你想要调试的工程依赖这个源码的工程

时间: 2024-11-07 00:04:11

调试Java源代码时变量的值无法追踪怎么办?的相关文章

在使用Reference Source调试.Net 源代码时如何取消optimizations(代码优化)-翻译

在使用PDB调试XAF时,发现好多变量都看不到.都被优化掉了. 下面的方法可以解决. 当你在使用Reference Source functionality in VS 2008 调试.Net 的源代码的时候,你会发现很多变量没法再调试时查看. 这是因为源代码服务器上提供的代码默认是为最终销售优化过的(optimized ).这些值虽然你没法查看,但不会阻断单步执行,大部分情况下你可能不需要查看. 但如果你真的需要查看,这里还是有一个办法的. 你需要靠诉CLR不要加载pre-JIT(也加NGEN

java的成员变量默认值

如果我们不做任何初始化工作,变量具有什么默认值,或者是否具有默认值呢?其实,成员变量在创建时,系统会为其分配一个默认值.不同类型的变量,默认值也不相同,下面来看看各种类型的默认值分别是什么. 用例子来说明:先输入一个java代码(这里只包括了实例变量) class Text1 { // 实例成员变量 private boolean bool; private byte b; private short s; private char c; private int i; private long

Java异常时的返回值

先来看一个小程序: public class JavaException {          public static void main(String[] args)          {                    System.out.println(test());          }          public static int test()          {                    int i=0;                    tr

Java中初始变量默认值

Java语言中有8种基本数据类型,基本情况汇总如下: 序号 数据类型 大小/位 封装类 默认值 可表示数据范围 1 byte(位) 8 Byte 0 -128~127 2 short(短整数) 16 Short 0 -32768~32767 3 int(整数) 32 Integer 0 -2147483648~2147483647 4 long(长整数) 64 Long 0L -9223372036854775808~9223372036854775807 5 float(单精度) 32 Flo

关于java中属性变量默认值的问题。

主要分为两种 1.全局变量 char '/u0000' byte 0 short 0 int 0 long 0L float 0.0f double 0.0d boolean false 以上8种基本数据类型的默认值. 引用数据类型的默认值为null. 举例如下: 在平常的jdbc访问数据库的过程中,如果通过实体对象映射数据映射操作数据库,由于一些错误原因,其中实体对象中有引用数据类型的变量时没有给其赋值, 默认就是null,如果有null值参与数据库的操作,那么访问的过程中就会报SQL语句异常

调试 | Java 中的调试

在总结 Java 知识的过程中,上一篇中提到了 javadoc 可以提取文件中的注释信息,但是由于一些环境变量中的 CLASSPATH 不需要设置,就删除了,在 cmd 命令下就可以提取出这个 java 文件的信息了.但是我尝试了在 eclipse 中,却又出现了类似的问题.今天就回顾一下 eclipse 中的代码调试(服务器端)和网页中调试(客户端),因为重在实际操作,所以就写个大概就是了. 1. 代码调试方式(1) (控制台打印) 1.服务端  System.out.println(); 

myeclipse调试代码的时候看不到变量的值和jdk源码重新编译

Q:myeclipse调试代码的时候看不到变量的值? A: 调试的类的Class文件里没有包含LocalVariableTable属性表, 这是因为在编译时,编译者为了减少文件大小而不把属性表的信息放在Class文件中. 使用命令为javac -g>http://hllvm.group.iteye.com/group/topic/25798--解决方法:需要重新编译一份用于debug版的. Q:重新编译jdk源码,启用debug信息 >http://www.cnblogs.com/thecat

xcode调试查看变量的值

对于IPhone开发/XCode的初学者,如何在调试时查看变量的值是很头痛的事情.因为Xcode的expression 经常无法正确显示变量的值.但是强大的GDB可以很方便的帮我们查看变量的值. 当执行到某断点时,在GDB窗口中使用po就可以查看变量.(po = print object) 1)查看String 或其它变量. po 变量名 2)查看某个Property.比如要查看item变量的name属性. po [item name]    注意,po item.name是不工作的. 3)查看

java:关于继承变量的值问题

1.在java中,如果子类继承父类的静态变量时,当你在子类面前修改这个静态变量的值,其父类的静态变量也会改变. 案例: //父类public class Animal { //静态属性 public static int Age=1; }: //子类public class Cat extends Animal{ //静态方法 public static void print(){ System.out.println("Animal:"+Animal.Age+"; Cat: