Отладчик IntelliJ IDEA

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

1. Запуск отладчика

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

debugger_run

В окне инструмента отладки (Debug) отображается список фреймов и потоков, а также их состояние, переменные и отслеживаемые переменные. Выбрав фрейм, вы увидите связанные с ним переменные.

2. Полезные горячие клавиши

  • Добавление/снятие точки останова (Toggle breakpoint) - Ctrl + F8 (Cmd + F8 для Mac)

  • Продолжить выполнение программы (Resume program) - F9

  • Шаг с обходом (Step over) - F8

  • Шаг со входом (Step into) - F7

  • Остановка (Stop) - Ctrl + F2 (Cmd + F2)

  • Просмотр информации о точке останова / просмотр всех точек останова (View breakpoint details/all breakpoints) - Shift + Ctrl + F8 (Shift + Ctrl + F8)

  • Отладка кода у позиции курсора (Debug code at caret) - Shift + Ctrl + F9 (например, если вы остаетесь внутри метода main)

3. «Умный» шаг со входом (Smart step into)

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

debugger_smart_step_into

4. Сброс фрейма (Drop frame)

В случае, если вы хотите «вернуться назад во времени» при отладке, на помощь придет функция «Сброс фрейма». Она пригодится, если вы по ошибке зайдете слишком далеко. Это не обратит глобального состояния вашего приложения, но, по крайней мере, вернет вас обратно к стеку фреймов.

debugger_drop_frame

5. Выполнение до курсора (Run to cursor)

Иногда бывает необходимо продолжить выполнение программы с остановкой на определенной строчке кода, при этом не добавляя еще одну точку останова. Это просто: нажмите Alt + F9.

debugger_run_to_cursor

6. Пометить выражение (Mark instance)

Если какое-то выражение необходимо распознавать при каждом запуске процесса отладки, вы можете установить на него цветовую метку, нажав F11 или вызвав контекстное меню на вкладке «Variables and Watches» (Переменные и отслеживаемые переменные).

mark_instance

Когда это выражение в следующий раз появится в одном из полей «Watches» (Отслеживаемые переменные), «Variables» (Переменные) или «Evaluate expression» (Вычислить выражение), вы увидите метку.

mark_instance_2

7. Вычислить выражение (Evaluate Expression)

Находясь в режиме отладки можно вычислить любое выражение с помощью крайне эффективного инструмента «Вычислить выражение», нажав Alt + F8.

debugger_evaluate_expression_hint

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

debugger_evaluate_expression

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

evaluate_marked_instance

8. Условие и данные точки останова

Если вы хотите изменить данные точки останова, нажмите Shift + Ctrl + F8 (Shift + Cmd + F8 для Mac). Здесь вы сможете указать условие остановки.

debugger_breakpoint_details_2

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

debugger_marked_condition

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

9. Точки останова в полях (Field breakpoints)

Кроме точек останова с условиями, вы можете использовать их и в полях (Field) . Эти точки останова срабатывают, когда к полю запрашивается доступ на чтение или запись. Для создания такой точки останова просто кликните по внутреннему полю, зажав Alt.

debugger_field_breakpoint_details

10. Точки останова по определенным действиям (Action breakpoints)

Для вычисления какого-либо выражения в произвольной строчке кода, без фактического прерывания выполения программы, может пригодиться следующий инструмент. Он называется «Точка останова по определенным действиям». Для ее создания просто кликните по внутреннему полю, удерживая Shift.

debugger_breakpoint_details_2_2

11. Временные точки останова (Temporary breakpoints)

Для создания точки останова, вызывающей единоразовое прерывание, кликните по внутреннему полю, удерживая Shift + Alt.

debugger_action_breakpoint_temp

12. Отключение точек останова

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

debugger_disable

13. Перезагрузка изменений и «горячее» подключение

Иногда необходимо внести в код незначительные изменения, не прерывая процесс выполнения программы. Поскольку в Java JM предусмотрена функция HotSwap («Горячая» замена), IDE обрабатывает такие задачи автоматически, предлагая перезагрузить измененные классы при их компиляции в режиме отладки.

debugger_hotswap

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

14. Удаленная отладка (Remote debug)

Наконец, последняя вещь, о которой необходимо знать при отладке в IntelliJ IDEA — это функция «Удаленная отладка». Она подразумевает подключение отладчика к процессу, который уже запущен на определенном порте вашего или любого другого хоста. Таким образом вы можете подключить отладчик к своему серверу приложений, работающему автономно.

Для создания удаленной конфигурации откройте раздел ‘Edit configurations’ (Редактировать конфигурации) и добавьте удаленную (Remote) конфигурацию запуска. Перед запуском данной конфигурации убедитесь, что указали правильный хост и порт.

debugger_remote

15. Настройки

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

debugger_settings


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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>