Отладка приложения SWT приводит к зависанию всех приложений GTK - PullRequest
5 голосов
/ 30 мая 2011

У меня есть приложение SWT, которое я отлаживаю с помощью удаленной отладки в eclipse.Если я установлю точку останова в обработчике событий приложения SWT, мой рабочий стол зависнет.Я все еще могу переключиться на текстовую консоль через Strg + Alt + Fx .Если я убью приложение SWT из консоли, все продолжит работать.

Так как это происходит только тогда, когда точка останова находится внутри обработчика событий, я сильно подозреваю, что SWT блокирует в цикле событий, вызывая все зависание.Я предполагаю, что есть некоторый магический параметр для SWT, который «разделяет» приложения, поэтому я могу правильно отлаживать, но я не могу его найти.

Ответы [ 2 ]

9 голосов
/ 31 мая 2011

Это известная проблема с родным виджетом, имеющим захват X Pointer и не выпускающим его.Наиболее распространенный обходной путь - запустить внутреннее затмение на другом дисплее.Я использую Xvnc , потому что я постоянно сталкиваюсь с этой проблемой, но другие примеры: XNest .

Я видел, как люди пробовали использовать -Dsun.awt.disablegrab=true.Я не знаю, работает ли это или нет.

См. https://bugs.eclipse.org/bugs/show_bug.cgi?id=20006 для подробного обсуждения проблемы и того, что люди пытались.

PW

0 голосов
/ 27 ноября 2012

У меня неоднократно возникала эта проблема при использовании Linux mint 11 с JRE 1.6.0.xx, хотя я просто использовал стандартные компоненты Swing и локальную отладку.При достижении точки останова в обработчике событий x11, кажется, полностью зависает, и мне нужно перейти в оболочку, чтобы убить процесс Java.

Установка -Dsun.awt.disablegrab=true решает проблему для меня.

Я просто установил аргументы виртуальной машины для конфигурации отладки, я думаю, что для удаленной отладки вам необходимо убедиться, что удаленное приложение было запущено с этой опцией VM в командной строке (или как бы она ни была запущена)а не в конфигурации отладки IDE или запуска Eclipse с этой опцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...