1. Обзор
В этом кратком руководстве мы рассмотрим, как отлаживать программы Java с помощью среды разработки Eclipse.
2. Основные Понятия
Eclipse имеет большую поддержку для отладки приложения. Он визуализирует пошаговое выполнение и помогает нам выявлять ошибки.
Чтобы продемонстрировать функции отладки в Eclipse, мы будем использовать пример программы Perfect Square Counter . Эта программа подсчитывает общее количество идеальных квадратов и даже идеальных квадратов под заданным числом:
public class PerfectSquareCounter { static int evenPerfectSquareNumbers = 0; public static void main(String[] args) { int i = 100; System.out.println("Total Perfect Squares: " + calculateCount(i)); System.out.println("Even Perfect Squares : " + evenPerfectSquareNumbers); } public static int calculateCount(int i) { int perfectSquaresCount = 0; for (int number = 1; number <= i; number++) { if (isPerfectSquare(number)) { perfectSquaresCount++; if (number % 2 == 0) { evenPerfectSquareNumbers++; } } } return perfectSquaresCount; } private static boolean isPerfectSquare(int number) { double sqrt = Math.sqrt(number); return sqrt - Math.floor(sqrt) == 0; } }
2.1. Режим отладки
Во-первых, нам нужно запустить программу Java в Eclipse в режиме отладки. Это может быть достигнуто двумя способами:
- Щелкните правой кнопкой мыши на редакторе и выберите Debug As- > Java-приложение (показано на скриншоте ниже)
- Отладка программы с панели инструментов (выделено на скриншоте ниже)
Отладка || программы с панели инструментов (выделено на скриншоте ниже)
Нам нужно определить точки, в которых выполнение программы должно приостановиться для исследования. Они называются точками останова и применимы для методов. Они также могут быть определены в любое время до или во время выполнения.
В принципе, есть 3 способа добавить точки останова в программу:
- Щелкните правой кнопкой мыши на маркерной полосе (вертикальной линейке), соответствующей линии, и выберите Переключить точку останова (показано на скриншоте ниже)
- Нажмите Ctrl+Shift+B на нужной строке, находясь в редакторе
- Дважды щелкните на маркерной полосе (вертикальной линейке), соответствующей необходимой линии
2.3. Управление потоком кода
Теперь, когда отладчик останавливается в заданных точках останова, мы можем приступить к дальнейшему выполнению.
Предположим, что отладчик в настоящее время расположен в соответствии с приведенным ниже скриншотом в строке 16:
Наиболее часто используемые параметры отладки:
- Шаг в (F5) – Эта операция выполняется внутри методов , используемых в текущей строке (если таковые имеются); в противном случае она переходит к следующей строке. В этом примере он будет принимать отладчик внутри метода is Perfect Square()
- Step Over (F6) – Эта операция обрабатывает текущую строку и переходит к следующей строке. В этом примере это приведет к выполнению метода is Perfect Square() и переходу к следующей строке
- Шаг возврата (F7) – Эта операция завершает текущий метод и возвращает нас к вызывающему методу. Поскольку в этом случае у нас есть точка останова в цикле, она все еще будет находиться в методе, иначе она вернется к основному методу
- Resume (F8) – Эта операция будет просто продолжаться до тех пор, пока программа не завершится если мы не достигнем какой-либо дополнительной точки останова
2.4. Перспектива отладки
Когда мы запускаем программу в режиме отладки, Eclipse предложит переключиться на перспективу отладки. Перспектива отладки-это набор некоторых полезных представлений, которые помогают нам визуализировать отладчик и взаимодействовать с ним.
Мы также можем переключиться на перспективу отладки вручную в любое время.
Вот некоторые из наиболее полезных представлений, которые это содержит:
- Представление отладки – Это показывает различные потоки и трассировки стека вызовов
- Представление переменных – Показывает значения переменных в любой заданной точке. Если нам нужно увидеть статические переменные, нам нужно явно указать, что
- Точки останова – Это показывает различные точки останова и точки наблюдения (которые мы увидим ниже)
- Debug Shell – Это позволяет нам писать и оценивать пользовательский код во время отладки (пример будет рассмотрен позже)
3. Методы
В этом разделе мы рассмотрим некоторые важные методы, которые помогут нам освоить отладку в Eclipse.
3.1. Переменные
Мы можем видеть значения переменных во время выполнения в представлении переменных. Чтобы увидеть статические переменные, мы можем выбрать раскрывающийся список Java- > Показать статические переменные .
Используя представление переменных, можно изменить любое значение на желаемое значение во время выполнения.
Например, если нам нужно пропустить несколько чисел и непосредственно начать с числа 80, мы можем сделать это, изменив значение переменной number :
3.2. Проверка Значений
Если нам нужно проверить значение выражения или оператора Java, мы можем выбрать конкретное выражение в редакторе, щелкнуть правой кнопкой мыши и проверить, как показано ниже. Удобный ярлык состоит в том, чтобы нажать Ctrl+Shift+I на выражении, чтобы увидеть значение:
В случае, если нам нужно постоянно проверять это выражение, мы можем щелкнуть правой кнопкой мыши и посмотреть. Теперь это добавляется в представление выражений, и значение этого выражения можно увидеть для разных запусков.
3.3. Отладочная оболочка
В контексте сеанса отладки мы можем написать и запустить пользовательский код для оценки возможностей. Это делается в отладочной оболочке.
Например, если нам нужно перепроверить правильность функциональности sqrt , мы можем сделать это в отладочной оболочке. В коде Щелкните правой кнопкой мыши- > Проверить , чтобы увидеть значение:
3.4. Условные точки останова
Будут случаи, когда мы захотим отлаживать только для определенных условий. Мы можем достичь этого, добавив условия к точке останова одним из двух способов:
- Щелкните правой кнопкой мыши точку останова и выберите пункт Свойства точки останова
- В представлении точки останова выберите точку останова и укажите условие
Например, мы можем указать точку останова для приостановки выполнения только в том случае, если число равно 10:
3.5. Точки наблюдения
Что точки останова предназначены для методов, точки наблюдения-для переменных уровня класса . В этом текущем примере точка останова в объявлении четных идеальных квадратных чисел называется контрольной точкой. Теперь отладчик будет приостанавливать выполнение каждый раз, когда поле будет доступно или изменено в точке наблюдения.
Это поведение по умолчанию, которое можно изменить в свойствах точек наблюдения.
В этом примере отладчик останавливает выполнение каждый раз, когда идеальный квадрат является четным числом:
3.6. Триггерные точки
Предположим, что мы отлаживаем сложную проблему в приложении с огромным количеством исходного кода. Отладчик будет продолжать приостанавливать поток из-за разбросанных точек останова.
Когда точка останова помечена как триггерная точка, это означает, что остальные точки останова будут включены только в том случае, если эта точка останова будет достигнута.
Например, на скриншоте ниже предполагается, что точка останова в isPerfectSquare() должна попадать на каждую итерацию цикла. Однако мы указали точку останова в методе calculate Count() в качестве триггерной точки вместе с условием.
Таким образом, когда количество итераций достигнет 10, это вызовет остальные точки останова. Следовательно, с этого момента, если точка останова на является идеальным квадратом () , выполнение будет приостановлено:
3.7. Удаленная отладка
Наконец, если приложение работает вне Eclipse, мы все равно можем использовать все вышеперечисленные функции при условии, что удаленное приложение позволяет отладку. В Eclipse мы бы выбрали Debug в качестве удаленного Java – приложения .
4. Заключение
В этом кратком руководстве мы познакомились с основами и различными методами отладки программ в среде Eclipse IDE.
Как всегда, исходный код, используемый в этом упражнении, доступен на GitHub .