Проверка значений переменных экземпляра класса Java в Eclipse - PullRequest
2 голосов
/ 25 августа 2009

В приложении у меня есть класс с несколькими переменными-членами и методами. Вызов метода с неверными параметрами приводит к ошибке AssertionError. Я настроил отладчик так, чтобы он останавливался на необработанных исключениях.

Проблема в том, что при переключении на перспективу отладки я вижу только экземпляр класса (для которого была вызвана функция) и два параметра. Я не могу развернуть экземпляр класса, чтобы увидеть значения его переменных-членов. Слева от экземпляра есть пробел, поэтому я предполагаю, что там должна быть стрелка, чтобы можно было развернуть ее так же, как в Outline.

Есть ли конфигурация или что-то, что я должен включить для этого? Или я неправильно понял окно переменных?

Если это имеет значение, это Eclipse 3.2.2 в Ubuntu Linux.


[Update] Я скачал новую версию с http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-java-galileo-linux-gtk.tar.gz

«Об Eclipse» теперь сообщает «Идентификатор сборки: 20090619-0625».

TestCase:

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, а также «newbar» и его значение, чтобы уточнить, что я хочу сделать, это развернуть «this» и увидеть его текущее значение для «bar».

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

После некоторого обсуждения в #eclipse мы обнаружили, что проблема была в ВМ. Я бежал:

/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. Проблема решена.

2 голосов
/ 25 августа 2009

Нет, у вас нет. Обычно первая строка в представлении отладки должна быть записью «this», которая представляет экземпляр, в котором вы в данный момент работаете. У него должна быть «+», которую вы нажимаете, чтобы развернуть список переменных экземпляра.

Если это не работает, возможно, вы находитесь в неправильном фрейме стека (вы можете выбрать его в списке трассировки стека), или Eclipse не может определить местоположение вашего исходного кода, или что-то еще не так.

Попробуйте создать небольшой тестовый сценарий, в котором это можно воспроизвести, и опубликовать его. Тогда посмотрим ...

КСТАТИ: Eclise 3.2.2 довольно старый. Рассмотрите возможность обновления до 3.5, чтобы убедиться, что проблема не устранена. Вы можете установить несколько версий Eclipse бок о бок (просто распаковать в каталог), так что нет необходимости затирать существующую установку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...