Приложение 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();
}
});