Отладчик IntelliJ: подключается, но не замечает, когда код сталкивается с точками останова

#java #intellij-idea #weblogic #remote-debugging

#java #intellij-idea #weblogic #удаленная отладка

Вопрос:

Я пытаюсь отладить сервер приложений (WebLogic) с помощью IntelliJ IDEA 11.1 Ultimate. Конфигурация отладчика работала ранее, я ничего не менял.

Что происходит: IntelliJ сообщает мне

Подключен к целевой виртуальной машине, адрес: ‘[снип]: 9009’, транспорт: ‘сокет’

Я могу добавлять и удалять точки останова, и они отмечены флажком, поэтому их установка, похоже, работает. Взаимодействуя с веб-интерфейсом моего приложения, я пытаюсь достичь установленных мной точек останова. Похоже, что точка останова фактически останавливает выполнение кода, но отладчик IntelliJ не реагирует. Веб-интерфейс моего приложения не отвечает, пока я не отключу отладчик, но IntelliJ, похоже, просто не замечает, что это вообще происходит. Я не могу взаимодействовать с отладчиком. Как я могу выяснить, что идет не так? Есть ли какой-либо отладочный вывод самого IntelliJ debugger? Существуют ли известные решения этой проблемы?

Комментарии:

1. Я сталкиваюсь со странными проблемами debbuger, когда есть несоответствие между исходным кодом и развернутым кодом. Вы уверены, что развернута актуальная версия?

2. Да, я развертываю его непосредственно в IntelliJ с помощью Ant-задачи, оно гарантированно соответствует версии, установленной на сервере приложений.

3. Как только вы решите, что приложение достигло точки останова, нажмите кнопку «пауза» в отладчике и посмотрите, что произойдет.

Ответ №1:

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

Комментарии:

1. Возникла та же проблема. Отладчик не остановится ни в какой точке останова, ни перейдет к какому-либо определенному месту в коде, в то время как приложение, по-видимому, заблокировано. Даже перезапуск IntelliJ не помог бы. Простое включение паузы и последующее возобновление сделали свое дело. Спасибо, приятель (y)

Ответ №2:

Хорошо, решил это: у меня была активирована точка останова метода. По-видимому, это настолько замедлило весь процесс отладки, что я не мог взаимодействовать с отладчиком. Как только я удалил точку останова, отладка снова заработала.

Ответ №3:

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

Также он показывает старые точки останова как действительные даже после изменения кода. Так получилось, что даже после развертывания файла war точки останова по-прежнему отображаются как допустимые точки останова. Это было странно!!

Просто в качестве примечания, я использовал CE, как показано ниже:
IntelliJ IDEA 2016.1.3
Сборка #IC-145.1617, созданная 3 июня 2016 года
JRE: 1.8.0_65-b17 amd64
JVM: 64-разрядная серверная виртуальная машина Java HotSpot (TM) от корпорации Oracle

Я пробовал разные вещи:

  1. Делает недействительным кэш.
  2. Аннулируйте кэш и перезапустите
  3. Повторно упакуйте war и повторно разверните его

Ничего из вышеперечисленного не сработало.

После этого я попытался удалить папку .idea и воссоздал проект заново. На этот раз снова создается папка .idea с обновленной конфигурацией.

Точки останова теперь сработали.

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

Ответ №4:

У меня была такая же проблема, когда мое приложение не останавливалось в точках останова, и все, что мне нужно было, это перезапустить IntelliJ Idea. И вуаля, теперь он действительно останавливается в точках останова.

Мое приложение было запущено, и на консоли оно печатало:

 Listening for transport dt_socket at address: 5005
  

Затем, когда я запустил свой IntelliJ debugger, он напечатал:

 Connected to the target VM, address: '192.168.2.9:5005', transport: 'socket'
  

Который остается тем же самым после перезапуска, но каким-то образом перезапуск делает это правильным для IntelliJ.

Ответ №5:

Случилось со мной после того, как я выдернул один из своих отладочных телефонов (будучи Android, мне нужно много телефонов для отладки) и быстро вставил другой.

Это случалось раньше, и я обычно либо,

а) вместо этого используйте Linux

б) сэкономьте на более крупном бренде / лучшем телефоне с водителем

c) adb kill-server / adb start-server

Они имеют некоторую степень успеха и предпочтительнее для меня, чем воссоздание моего проекта. Насколько я понял из поддержки Android, я должен использовать Nexus с Linux для любого вида поддержки, что в значительной степени устраняет любую перекрестную компиляцию / отладку, от которой я хотел бы извлечь выгоду.

Даже телефон, который я выдернул, теперь (24 часа спустя) отказывается соблюдать контрольные точки.

Ответ №6:

У меня была такая же проблема с вами, и мой Java host cmd запускается из необработанной Java-команды java -cp ...

Но решение для меня более странное… Я скачал исходные тексты maven, и это работает …

Перед загрузкой исходных текстов я попытался использовать pause в debugger (потому что он никогда не останавливается, поэтому я хочу проверить, куда он идет), и он постоянно застревает в одной строке кода в моем файле зависимостей. После загрузки исходного кода он не зависает, и точки останова работают…..

Надеюсь, это кому-нибудь поможет.