Отладчик IntelliJ застревает
Я отлаживаю обычное Java-приложение, нет графического интерфейса, всего много вычислений и ~ 5 вызовов в стеке для основного потока при возникновении проблемы. В основном он продолжает говорить "Сбор данных" в локальном часовом режиме.
![введите описание изображения здесь]()
Поэтому вместо того, чтобы идти шаг за шагом, я попытался добавить точку останова сразу после нажатия "Возобновить". Теперь он говорит: "Ожидание завершения последней команды отладчика".
![введите описание изображения здесь]()
У кого-нибудь была эта проблема раньше? Меняет ли отладчик единственный способ понять это?
Ответы
Ответ 1
В IntelliJ (2017.1.4 Community Edition) следующее исправление для меня:
- Файл- > Настройки
- Введите "toString"
- Перейдите к сборке, выполнению, развертыванию- > отладчику- > представлениям данных- > Java
- Установите флажок "Включить" toString(): "checkbox"
- Снимите флажок.
Перезапустите отладчик.
Ответ 2
Следующее исправило это для меня на IntelliJ 2018.2.4:
- Правый щелчок точки останова
- Переключите настройку, чтобы приостановить "Тема" вместо "Все"
Это не будет полезно, если вам действительно нужно приостановить все потоки для отладки, но это избавило меня от сообщений "Сбор данных..." и "Ожидание, пока последняя команда отладчика завершит". Настройка также сохраняется для последующих точек останова, поэтому вам нужно изменить ее только один раз.
Ответ 3
Я просто столкнулся с тем, что похоже на ту же проблему. В моем случае это был класс (KafkaStream) в трассировке стека точек останова с "плохим" toString
методом. Метод toString
блокирует и, следовательно, зависает отладчик. Я протестировал метод toString
в главном коде строки, и он повесил основной поток (т.е. Это не проблема с отладчиком).
Вот трассировка стека для моего потока, который попал в точку останова (в строке, которая просто пыталась проверить логический атрибут моего класса):
![Hung Breakpoint Stacktrace]()
Intellij предоставляет возможность обойти мою проблему. Это позволяет вам переопределить, как отладчик отображает класс:
![Work Around]()
Если ваша проблема вернется, я предлагаю взять дамп потока (внутри или снаружи IDE) и посмотреть, что делает ваш поток.
Ответ 4
Исправление, которое работало для меня, состояло в том, чтобы удалить точки останова метода. Это сделало это очень быстрым.