Какие методы могут одно использование для отладки то, что, кажется, мертвая блокировка в программе Java. Моим IDE является Eclipse, и я думаю, что у меня есть identifid два заведенных в тупик потока. В отладчике, щелкая правой кнопкой по любому из рассматриваемых потоков и выбора приостанавливают, приостанавливает поток и отображает код, в настоящее время выполняемый. Попытка неродной в или переступает через вопрос о строке, кажется, не имеет никакого эффекта - изменения состояния потока в "Продвижении" с управлением, никогда не возвращаясь к отладчику, если не приостанавливают, щелкается еще раз.
Спасибо
Если вы используете Sun JVM, то прикрепите его с помощью JConsole и перейдите на панель Threads. Там есть кнопка "Обнаружить тупик".
При запущении программы в "консольном режиме", можно совершить нападки ctrl+break
, который дает вам дамп потока. После того как вы сталкиваетесь с мертвой блокировкой, это могло быть полезно. Если мертвая блокировка не появляется слишком часто, могло бы быть трудно поймать мертвую блокировку как это как бы то ни было.
Окно отладки, которое показывает, что стеки различных потоков будут указывать, когда поток останавливается. Когда два потока останавливаются, вы можете изучить то, что каждый ждет. Найти что-то общее, сообщит вам источник тупика.
Я не знаю о затмении, но что вы ищете, профилировщик. Контроль JProfiler или взглянул на этот список , например. Профилировщик подключает непосредственно к JVM и визуализирует то, что продолжается в вашей программе в режиме реального времени. Когда мертвые блокировки происходят, вы получаете визуальные/текстовые подсказки, из которых потоки находятся в конфликте.
Я бы порекомендовал использовать статический инструмент анализа, как
, которые часто могут обнаруживать тупики при компиляции времени