«1. Обзор

В этом кратком руководстве мы увидим, как отлаживать Java-программы с помощью Eclipse IDE.

2. Основные понятия

В Eclipse есть отличная поддержка для отладки приложений. Он визуализирует пошаговое выполнение и помогает нам обнаруживать ошибки.

Чтобы продемонстрировать возможности отладки в Eclipse, мы будем использовать пример программы PerfectSquareCounter. Эта программа подсчитывает общее количество полных квадратов и даже полных квадратов под заданным числом:

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 в режиме отладки. Этого можно добиться двумя способами:

    Щелкните правой кнопкой мыши на редакторе и выберите Отладка как -\u003e Java-приложение (показано на снимке экрана ниже) Отладьте программу с помощью панели инструментов (выделено на снимке экрана ниже)

2.2. Точки останова

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

В принципе, есть 3 способа добавить точки останова в программу:

    Щелкните правой кнопкой мыши на полосе маркера (вертикальной линейке), соответствующей линии, и выберите «Переключить точку останова» (показано на скриншоте ниже). Нажмите Ctrl+Shift+ B на нужной строке, находясь в редакторе. Дважды щелкните на полосе-маркере (вертикальной линейке), соответствующей нужной строке

2.3. Управление потоком кода

Теперь, когда отладчик останавливается в заданных точках останова, мы можем продолжить выполнение.

Предположим, что отладчик в настоящее время расположен, как показано на снимке экрана ниже, в строке 16:

Наиболее часто используемые параметры отладки:

    Step Into (F5) — эта операция выполняется внутри используемых методов. в текущей строке (если есть); в противном случае он переходит к следующей строке. В этом примере он возьмет отладчик внутри метода isPerfectSquare() Step Over (F6) — эта операция обрабатывает текущую строку и переходит к следующей строке. В этом примере это выполнит метод isPerfectSquare() и перейдет к следующей строке. Шаг Возврат (F7) — эта операция завершает текущий метод и возвращает нас к вызывающему методу. Поскольку в этом случае у нас есть точка останова в цикле, она все еще будет внутри метода, иначе она вернется к основному методу. Возобновление (F8) — эта операция просто продолжит выполнение до тех пор, пока программа не завершится, если мы попадаем в любую последующую точку останова

2.4. Перспектива отладки

Когда мы запускаем программу в режиме отладки, Eclipse предложит переключить ее в перспективу отладки. Проекция Debug — это набор некоторых полезных представлений, которые помогают нам визуализировать отладчик и взаимодействовать с ним.

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

Вот некоторые из наиболее полезных представлений, которые он содержит:

    Представление отладки — показывает различные потоки и трассировки стека вызовов. Представление переменных — показывает значения переменных в любой заданной точке. Если нам нужно увидеть статические переменные, нам нужно явно указать, что Точки останова — это показывает различные точки останова и точки наблюдения (которые мы увидим ниже) Оболочка отладки — это позволяет нам писать и оценивать собственный код во время отладки ( пример будет рассмотрен позже)

3. Методы

В этом разделе мы рассмотрим некоторые важные методы, которые помогут нам освоить отладку в Eclipse.

3.1. Переменные

Мы можем видеть значения переменных во время выполнения в представлении Variables. Чтобы увидеть статические переменные, мы можем выбрать раскрывающийся вариант Java -\u003e Показать статические переменные.

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

Например, если нам нужно пропустить несколько чисел и сразу начать с числа 80, мы можем сделать это, изменив значение переменной number:

3.2. Проверка значений

«Если нам нужно проверить значение выражения или оператора Java, мы можем выбрать конкретное выражение в редакторе, щелкнуть правой кнопкой мыши и проверить, как показано ниже. Удобный ярлык — нажать Ctrl+Shift+I на выражении, чтобы увидеть значение:

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

3.3. Отладочная оболочка

В контексте сеанса отладки мы можем написать и запустить собственный код для оценки возможностей. Это делается в Debug Shell.

Например, если нам нужно перепроверить правильность функциональности sqrt, мы можем сделать это в Debug Shell. На коде щелкните правой кнопкой мыши -\u003e Проверить, чтобы увидеть значение:

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

Будут случаи, когда мы хотим отлаживать только определенные условия. Мы можем добиться этого, добавив условия к точке останова одним из двух способов:

Щелкните правой кнопкой мыши точку останова и выберите Свойства точки останова. В представлении точки останова выберите точку останова и укажите условие

Например, мы можем указать точка останова для приостановки выполнения, только если число равно 10:

3.5. Точки наблюдения

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

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

В этом примере отладчик останавливает выполнение каждый раз, когда полный квадрат оказывается четным числом:

3.6. Триггерные точки

Предположим, что мы отлаживаем сложную проблему в приложении с огромным объемом исходного кода. Отладчик будет продолжать приостанавливать поток из-за разрозненных точек останова.

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

Например, на снимке экрана ниже точка останова isPerfectSquare() должна срабатывать при каждой итерации цикла. Однако мы указали точку останова в методе calculateCount() в качестве точки срабатывания вместе с условием.

Итак, когда количество итераций достигнет 10, это вызовет остальные точки останова. Следовательно, с этого момента, если сработает точка останова isPerfectSquare(), выполнение будет приостановлено:

3.7. Удаленная отладка

Наконец, если приложение работает вне Eclipse, мы по-прежнему можем использовать все вышеперечисленные функции при условии, что удаленное приложение позволяет отладку. В Eclipse мы выбираем Debug как Remote Java Application.

4. Заключение

В этом кратком руководстве мы рассмотрели основы и различные методы отладки программ в Eclipse IDE.

Как всегда, исходный код, используемый в этом упражнении, доступен на GitHub.

«

In this quick guide, we’ve seen the basics and different techniques of debugging programs in Eclipse IDE.

As always, the source code used in this exercise is available over on GitHub.