Руководство пользователя IntelliJ IDEA. Отладчик.

Отладчик

  1. Запуск отладчика
    После того как вы настроите конфигурацию запуска вашего проекта, вы можете запускать его в режиме отладки, нажав Shift + F9



    В окне отладчика вы можете видеть стек вызовов функций и список потоков, с их состояниями, переменными и окнами просмотра состояния. Когда вы выбираете контекст вызова функции, вы можете просмотреть значения переменных соответствующих выбранному контексту.

  2. Полезные клавиатурные сокращения отладчика
    • Установить/снять точку останова — Ctrl + F8 (Cmd + F8 для Mac)
    • Возобновить выполнение программы — F9
    • Перейти к следующей инструкции — F8
    • Перейти внутрь функции — F7
    • Приостановить выполнение — Ctrl + F2 (Cmd + F2)
    • Переключить между просмотром списка точек останова и подробной информацией о выбранной точке — Shift + Ctrl + F8 (Shift + Ctrl + F8)
    • Запустить отладку кода с точки на которой стоит курсор — Shift + Ctrl + F9 (если это внутри метода main())

  3. Умный переход внутрь
    Иногда вам надо при пошаговой отладке перейти внутрь определенного метода, но не первого который будет вызван. В таком случае вы можете нажать Shift + F7 (Cmd + F7 для Mac) чтобы выбрать из предложенного списка метод который вам нужен. Это может сэкономить вам массу времени.



  4. Удалить контекст вызова функции
    Если вам нужно «вернуться назад во времени» во время отладки, вы можете сделать это удалив контекст вызова функции. Это сильно поможет если вы по ошибке зашли слишком глубоко. Таким образом вы не откатите глобальное состояние выполнения программы, но как минимум вы вернетесь назад по стеку вызовов функций.



  5. Переход к курсору
    Иногда вам надо возобновить выполнение программы и остановиться на какой-то другой строчке кода, не создавая точку останова. Это легко — просто нажмите Alt + F9.



  6. Пометить элемент
    Если вы хотите легко видеть какой-то элемент во время отладки, вы можете добавить к нему цветную метку, нажав F11 или выбрав соответствующий пункт в меню вкладки Variables и Watches.



    Когда этот элемент появится в списке, вы увидете его метку.



  7. Вычислить выражение
    В режиме отладки вы можете вычислить любое выражение, с помощью очень мощного инструмента вызываемого нажатием Alt + F8.



    Этот инструмент предоставляет автодополнение кода как и редактор, так что ввести любое выражение будет очень просто.



    Если у вас есть какие-то элементы с метками, автодополнение кода покажет вам эти метки чтобы вы могли легко найти нужные элементы и вычислить их значения.



  8. Состояние и настройки точки останова
    Если вы хотите поменять какие-то настройки точки останова, вы можете нажать Shift + Ctrl + F8 (Shift + Cmd + F8 для Mac).Во всплывающем окне вы можете ввести нужные вам параметры.



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



    Чтобы получить список всех точек останова в вашем проекте (с расширенными настройками), снова нажмите Shift + Ctrl + F8 (Shift + Cmd + F8 для Mac).

  9. Точки останова переменной
    В дополнение к условным точкам останова, вы можете также использовать точки останова переменной. Такие точки срабатывают, когда производится чтение или запись в какую-то переменную. Для того чтобы создать такую точку останова, кликните на панель слева от редактируемого текста, напротив нужной вам переменной, зажав Alt.



  10. Точки останова по событиям
    Еще одна полезная возможность — вычислить определенное выражение в нужной вам строке кода не прерывая выполнение. Для этого вам нужно кликнуть на панель слева от редактируемого кода напротив нужной строки, зажав Shift.



  11. Временные точки останова
    Для того чтобы создать точку останова которая сработает только один раз, кликните на панель слева от кода зажав Shift + Alt.



  12. Отключить точки останова
    Также очень полезно знать, что любая точка останова может быть быстро отключена по нажатию на панель слева от кода с зажатым Alt.



  13. Загрузка изменений и быстрая замена
    Иногда вам нужно внести небольшие изменения в код без прерывания процесса отладки. Так как виртуальная машина Java поддерживает возможность HotSwap, среда разработки в режиме отладки предлагает вам перезагрузить измененные классы когда вы их скомпилируете.



    Не забывайте, что функционал HotSwap в Java машине имеет ряд ограничений и не позволяет перезагружать статические поля и методы.

  14. Удаленная отладка
    Последняя вещь в IntelliJ IDEA о которой вам точно нужно знать это удаленная отладка. Удаленная отладка — подключение отладчика к уже запущенной у вас или на другом компьютере Java машине по сетевому порту. Таким образом можно подключить отладчик к серверу приложений, запущенному на сервере.

    Чтобы создать конфигурацию для удаленного запуска, перейдите к редактированию конфигураций (Edit configurations) и нажмите «добавить конфигурацию удаленного запуска» (Remote). Убедитесь что вы указали правильное имя компьютера и порт прежде чем запустить эту конфигурацию.



  15. Настройки
    Если вы хотите поменять настройки отладчика по умолчанию, нажмите Settings → Debugger.




Оригинал статьи

20 комментариев

Yevgen74
У меня дебагер тупо не работает! Что делать не понятно. В чем может быть дело? Может я что-то не настроил?
Batrak
У меня тоже тупо не работал в окне Variables было сообщение «Connected to the target VM, address: '127.0.0.1:59933', transport: 'socket'», пол дня разбирался, пока не поставил точку останова возле строки
public static void main(String[] args)
Gamurari
  • Gamurari
  • 0
  • Комментарий отредактирован 2016-01-14 10:50:33 пользователем Gamurari
Чувак, я тебя обожаю. Неделю не могла понять что не так с этим дебагером, пока не прочитала твой комментарий
Wardeng
Gamurari, о и тебе спасибо. Я прочитал твой коммент, потом почитал выше. И вдруг нашел кнопку которая позволяет дебажить прогу без тысячи брекпоинтов))))
Ставим точку на маин, а потом жмем F7 Ура))) как этого нехватало мне целых полгода)
Vikentsi
  • Vikentsi
  • 0
  • Комментарий отредактирован 2017-09-12 00:22:22 пользователем Vikentsi
Wardeng, и тебе спасибо.) Мне тоже не хватало кнопки F7 и дебажить с помощью одного брэкпоинта.)
volko
Есть ли возможность дебажить метод run() нити (Thread)? У меня на точках останова в нем дебаггер никогда не останавливается.
CommandorShepard
Насколько я понимаю, многопоточные программы вообще малореально дебажить, так как пока будешь пошагово проходить один поток, непонятно, что будет в другом происходить, и насколько он отработает.
savimar
там есть вкладка для потоков и их можно отследить в ней.
J_Mnemonic
thread dump что-ли?
abbath0767
Отладчик превосходная вещь! Спасибо за статью. Я конечно был знаком с ним и до статьи (метод научного тыка), но некоторые подробности и особенности очень полезные. До сих пор помню как вместо отладчика пользовался System.out.print в разных местах кода.
dupliaka
Мне кажется в 9 пункте опечатка, поправьте меня если я не права, но там должен быть ctrl
molodets
Что-то у меня ни с Ctrl, ни с Alt не срабатывает
Morfin
15 левл. В задаче предложили воспользоваться дебаггером. До этого им ни разу не пользовался. Зашел на форум, посмотреть, что советуют там, ибо не знаю что и как с эти дебаггером. Таким новичком оказался не один я. Ну и ответом на вопрос помощи на форуме была ссылка на эту статью. Ну, думаю, круто, щас разберусь.
Прочитал статью, поржал) А где нормальная инструкция? Для новичков которая. Я долбаный брейкпоинт поставить не мог минуту, а как поставил не мог въехать, для чего он.
Помощь — она такая помощь.
thinker
как ты дошёл до 15 уровня без дебаггера? О_о
Morfin
Я просто об этом не задумывался:) Уже кстати почти на 20ом. Все так же без дебаггера
Wardeng
Спасибо!
trukach05
10 уровень. Понадобился дебаггер, спасибо за инструкцию!
imeriks
Добрый вечер.
Подскажите, почему дебагер может выдавать «collecting data...», то есть перестал выдавать значения переменных и только эта строчка. Такое в 1-2 программах, в других работает нормально. Что это такое и почему возникает? Может кто сталкивался.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.