Приложение Eclipse SWING: точка останова попадает только после создания необработанного исключения

У меня действительно странная проблема. Я работаю над приложением Java SWING в Eclipse. Я устанавливаю точку останова где-то в моем коде, затем запускаю отладку. Я выполняю часть кода, содержащую точку останова, но она всегда пропускается. Как только я запускаю какой-то код, который выдает необработанное исключение, точки останова снова начинают срабатывать, ничего не меняя. Код, который генерирует исключение, и код, содержащий точку останова, не связаны.

Я пытался установить точки останова в нескольких местах, но они никогда не попадали в цель, пока не было сгенерировано исключение. У меня есть эта проблема только для этого одного конкретного приложения. Мой отладчик отлично работает для других приложений SWING.

Можете ли вы придумать причину, вызывающую это?

2 ответа

Решение

Какую точную версию Eclipse и Java вы используете?

Вам известен этот вопрос? ( ошибка 279137: точки останова не достигают JDK 1.6.0_14)


Как отмечает gojomo в комментариях, эта ошибка (279137) сейчас (21 июля 2009) упоминает:

Ошибка теперь видна в базе данных ошибок Sun: ошибка 6862295.

Мы перечислили обходной путь для этой проблемы, который можно использовать, пока мы исследуем исправление ошибки.

Работа вокруг

Используя опцию -XX:+UseParallelGC делает ошибку не воспроизводимой ни на виртуальной машине клиента, ни на виртуальной машине сервера.

(Вариант йо добавить в eclipse.ini)

Я бы порекомендовал вам использовать функцию "Смотреть эту ошибку", чтобы вы могли получать уведомления об обновлениях этой ошибки. Вот ссылка, чтобы посмотреть эту конкретную ошибку


ФИКСИРОВАННЫЙ

Как отмечается в выпуске jdk6_u16 (конец августа 2009 г.), эта ошибка была исправлена

Исправлена ​​ошибка в этом выпуске:

6862295 Изменения нити JDWP во время сеанса отладки (приводящие к игнорируемым точкам останова)

Вы начали графический интерфейс в отдельном потоке? Я не распознаю вашу конкретную проблему, но многие странные проблемы исчезли, как только я начал использовать этот код из руководств по Java:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        createAndShowGUI();
    }
});
Другие вопросы по тегам