Отладка Java-кода в IDE
Отладка Java-кода в IDE
Отладка (debugging) — поиск и устранение ошибок в программе. Отладчик позволяет приостанавливать выполнение в заданных точках, просматривать значения переменных, выполнять код пошагово и анализировать стек вызовов.
| Способ | Плюсы | Минусы |
|---|---|---|
| Отладчик IDE | Визуальный анализ, пошаговое выполнение, все переменные в области видимости | Нужна настройка среды |
System.out.println() | Просто, без специальных инструментов | Загромождает код, ограниченная информация |
Точка останова и запуск
- Откройте файл в редакторе.
- Щёлкните слева от номера строки — появится красная точка (breakpoint).
- Запустите отладку: Shift+F9 в IntelliJ IDEA (или кнопка с жуком).
Пример для пошагового разбора:
public class DebugExample {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9, 3};
int max = findMax(numbers); // breakpoint здесь
System.out.println("Максимум: " + max);
}
public static int findMax(int[] array) {
int max = array[0];
for (int i = 0; i <= array.length; i++) { // ошибка: <= вместо <
if (array[i] > max) {
max = array[i];
}
}
return max;
}
}
Отладчик остановится на breakpoint и покажет, что цикл выходит за границы массива.
Команды отладчика (IntelliJ IDEA)
| Команда | Клавиша | Действие |
|---|---|---|
| Шаг с заходом | F7 | Выполняет строку, заходит внутрь методов |
| Шаг с обходом | F8 | Выполняет строку, не заходя в методы |
| Шаг с выходом | Shift+F8 | Выходит из текущего метода |
| Продолжить | F9 | До следующей точки останова |
| Остановить | Ctrl+F2 | Завершить сеанс отладки |
Панели отладчика
- Variables — значения локальных переменных и полей объектов.
- Frames (Call Stack) — цепочка вызовов методов от
mainдо текущей строки. - Breakpoints — список всех точек останова; можно задать условие (например,
i > 5).
Условная точка останова
Полезна в циклах, когда нужно остановиться только при определённом значении:
public class ConditionalBreakpoint {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("Итерация: " + i); // условие: i > 5
}
}
}
В IntelliJ IDEA: правый клик на breakpoint → More → поле Condition.
Пример: отладка алгоритма
public class SecondMaxDebug {
public static void main(String[] args) {
int[] numbers = {8, 3, 12, 5, 9, 1, 7};
int result = findSecondMax(numbers);
System.out.println("Второй максимум: " + result);
}
public static int findSecondMax(int[] array) {
int max = array[0];
int secondMax = Integer.MIN_VALUE;
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
secondMax = max;
max = array[i];
} else if (array[i] > secondMax) {
secondMax = array[i];
}
}
return secondMax;
}
}
Задание: поставьте breakpoint на первой строке цикла и проследите, как меняются max и secondMax на каждой итерации.
Пример: отладка рекурсии
public class FactorialDebug {
public static void main(String[] args) {
int n = 5;
long result = factorial(n);
System.out.println(n + "! = " + result);
}
public static long factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
}
В панели Frames видно вложенные вызовы factorial(5) → factorial(4) → … → factorial(1).
Удалённая отладка (JVM)
Для приложений без IDE можно включить JDWP:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
IDE подключается к порту 5005 и работает так же, как с локальным процессом. Подробнее — в «Справочнике по Java».
public class DebugQuiz {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 10; i++) {
sum += i;
}
System.out.println("Сумма 1..10: " + sum);
}
}
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Основы Java - устройство JDK/JVM, модель компиляции и базовые принципы платформонезависимого выполнения. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. История Java — от проекта Green и Oak до OpenJDK, LTS-релизов и современной платформы (модули, records, виртуальные потоки). Библиотеки, фреймворки, инструменты сборки, тестирования, развёртывания и мониторинга. Что такое пакет и пакетная структура, как собираются проекты на Java. Справочник-шпаргалка по конфигурациям в Java — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел. Гайд по установке и настройке с написанием первой программы и её запуском. Практические примеры — консольные утилиты, композиция классов в мини-игре и первое Swing-приложение. Кавычки, точки, запятые, скобки и прочие знаки препинания. Это полный справочник всех ключевых слов языка Java, включая основные, контекстные и зарезервированные слова. Набор функций, которые включены в стандартную библиотеку языка.Основы языка Java
Что требуется знать перед началом изучения языка программирования Java
Рекомендации по разработке на Java
История языка Java
Экосистема Java-приложений
Структура и сборки Java-проектов
Справочник по конфигурациям в Java
Первая программа на Java
Простые приложения на Java
Синтаксис и пунктуация в Java
Ключевые слова в Java
Встроенные функции и методы Java