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

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

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

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

Ответ 1

Какая конкретная версия eclipse и Java вы используете?

Знаете ли вы этот вопрос? (ошибка 279137: точки останова не попадают под JDK 1.6.0_14)


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

Ошибка теперь отображается в базе данных sun bug: ошибка 6862295

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

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

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

(Опция yo добавляет к eclipse.ini)

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


Fixed

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

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

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

Ответ 2

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

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        createAndShowGUI();
    }
});