【问题标题】:Inspecting java class instance variable values in Eclipse在 Eclipse 中检查 java 类实例变量值
【发布时间】:2009-08-25 10:07:44
【问题描述】:

在一个应用程序中,我有一个包含一些成员变量和方法的类。使用错误参数调用方法会产生 AssertionError。我已将调试器设置为在未捕获的异常时停止。

问题是,当切换到调试视角时,我只能看到类实例(在其上调用函数)和两个参数。我无法展开类实例来查看其成员变量的值。实例左侧有一个空格,所以我假设那里应该有一个箭头,以便能够以与大纲中类似的方式展开它。

是否有配置或我必须为此启用的东西?还是我误解了变量窗口?

如果重要的话,这是 Ubuntu Linux 中的 Eclipse 3.2.2。


[更新] 我从http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-java-galileo-linux-gtk.tar.gz下载了一个新版本

“关于 Eclipse”现在报告“Build id: 20090619-0625”。

测试用例:

class Foo {
    private int bar;

    Foo() {
        bar = 1;
    }

    public void set(int newbar) {
        assert (newbar<0);
        bar = newbar;
    }
}

class Test {

     public static void main (String[] args){
         Foo f = new Foo();
         f.set(5);
     }
}

显然,这段代码产生了断言异常。但唯一的变化是“this”的图标在新版本中从绿色圆圈变为蓝色三角形。仍然找不到扩展它的方法。在这里,我可以看到 Foo 实例的“this”,以及“newbar”及其值,澄清一下,我要做的是展开“this”并查看“bar”的当前值。

【问题讨论】:

    标签: java linux eclipse debugging


    【解决方案1】:

    不,你没有。通常调试视图的第一行应该是一个条目“this”,它代表您当前正在运行的实例。它应该有一个“+”,您单击它可以展开实例变量列表。

    如果这不起作用,可能是您在错误的堆栈框架中(您可以在堆栈跟踪列表中选择它),或者 Eclipse 无法解析您的源代码位置,或者其他错误。

    尝试创建一个可重现的小测试用例,然后发布。那我们看看……

    顺便说一句: Eclise 3.2.2 相当旧。考虑升级到 3.5 以查看问题是否仍然存在。您可以并排安装多个 Eclipse 版本(只需解压缩到一个目录),因此无需破坏现有安装。

    【讨论】:

    • 我看到“this”,但它旁边没有“+”,可以展开它。我通过 ubuntus 包库安装了 eclipse,我先更新到最新版本并在那里再次测试。
    • 从 Ubuntu 存储库安装是个坏主意。严重过时。从 Eclipse.org 站点获取最新的包。无需“安装”,只需解压缩并运行即可。 eclipse.org/downloads
    【解决方案2】:

    经过#eclipse 的一些讨论,我们发现VM 是问题所在。我在跑步:

    /usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/bin/java
    

    改成:

    /usr/lib/jvm/java-6-openjdk/bin/java
    

    并提供一个-ea 标志作为VM 的参数,让我扩展类实例检查bar 的值。问题解决了。

    【讨论】:

    • 啊,是的,Ubuntu 默认使用 GNU JVM,它(还)没有 Sun JVM 完整。不过,令人惊讶的是 Eclipse 完全可以运行。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2018-11-26
    相关资源
    最近更新 更多