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