LINUX.ORG.RU

Eclipse «подвешивает» при дебагинге Х-сессию в Linux-e


0

0

Привет коллеги. Спрашивал на java-форумах - ответа не получил. Подскажите, куда рыть ? Ситуация: 1. ОС — Kubuntu 8.04 (пробовал Ubuntu 8.04 и OpenSUSE 11.0 и Fedora 8, Tedora 9) 2. Рабочий стол — KDE 3.5.9 (пробовал так же Gnome) 3. JVM — Sun 1.6.0 u6 (пробовал так же openjdk) 4. Eclipe 3.4 (релиз). (встречалось и на 3.4RC-N) 5. Проект — десктопное приложение (Swing+Postgresql).

6. Ставлю точку прерывания в моём порождении от JComboBox.PopupMenuListener.popupMenuWillBecomeInvisible(PopupMenuEvent e), запускаю дебагинг и при достижении вышеупомянутой точки графический стол "замирает" (могу только лишь мышкой двигать и лицезреть перемещающийся курсор). Ухожу в терминальную сессию и убиваю java-процесс соответствующий моей отлаживаемой программе. Возвращаюсь на рабочий стол — всё оживает. Если же точки прерывания ставлю в иных местах — всё дебагится и работает.

Пробовал изменить логику приложения и реализовывал JComboBox.addItemListener(new ItemListener(){@Override public void itemStateChanged(ItemEvent e) {...} });

И опять при дебагинге брейк-поинт поставленный в первом же операторе метода itemStateChanged подвешивает не только Eclipse, но и все иные GUI-приложения. Вернее сказать - весь рабочий стол. Такое впечатление, что где-то рождается некое "невидимое" модальное окно и оно ждёт от меня ответа, блокируя при этом все остальные приложения и даже "панель задач".

И чё делать ?

Готов экспериментировать, только вот идей более плодотворных не осталось.

anonymous

Verified :)

sun jdk 1.6.0_06
eclipse 3.4
kde 3.5.9

Боюсь, это не эклипсовый баг, и, возможно, даже не джавовский, а где-нибудь gtk-шный или типа того.

source code :

public class Lor2904259Test {
public static void main(String[] args) {
final Vector vector = new Vector();
vector.add("Hello");
final JComboBox jcb = new JComboBox(vector);
jcb.addPopupMenuListener(new PopupMenuListener(){

public void popupMenuCanceled(PopupMenuEvent e) {
System.out.println("Canceled");
}

public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
System.out.println("Will become invisible"); // set breakpoint here
}

public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
System.out.println("Will become visible");
}});

final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(jcb);
frame.pack();
frame.setVisible(true);
}
}

alexsaa
()
Ответ на: комментарий от alexsaa

Подвешивание X-сессии ComboBox'ом

Проверил, вместо breakpoint можно поставить sleep, и запускать вообще без эклипса. Всё это время (пока оно спит) клава и мышь будут игнорятся.

Так что ни эклипс, ни дебаг тут ни при чём :)

alexsaa
()
Ответ на: Подвешивание X-сессии ComboBox'ом от alexsaa

Спасибо. Не скажу , что утешен, но хоть подтверждение повтора проблемы получил. Вот бы ещё, где, её решение надыбать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.