Перейти к основному содержимому

Отладка с помощью Eclipse

· 6 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

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

  • Щелкните правой кнопкой мыши редактор и выберите « Отладка как» -> «Приложение Java» (показано на снимке экрана ниже).
  • Отладьте программу с панели инструментов (выделено на снимке экрана ниже)

./db252fcab3bb28fe140995f125a76740.jpg

2.2. Контрольные точки

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

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

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

./2bc84f84300588e6a3638c838b0419b8.jpg

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

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

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

./9504666861ef8846585f891d3845d62e.jpg

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

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

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

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

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

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

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

./c8242735ae49a41e559dfb7b6bf90c6c.jpg

3. Методы

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

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

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

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

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

./c2cecbdfd6043de191930889e90be113.jpg

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

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

./ac14619db4a6ede14a8116a3ea684ab3.jpg

./ef25320a33ba6a56c6607490180b5899.jpg

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

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

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

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

./726352552878099e0eb284175fdceed6.jpg

./518ccb5e162247712998fd8a76b361d5.jpg

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

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

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

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

./a014223fa804e97ac8a762ee6d0da852.jpg

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

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

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

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

./57cabfef6f60a89dc57a3f0613e2a8c5.jpg

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

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

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

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

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

./a61037a74942fb89436e2d13adb5192b.jpg

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

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

4. Вывод

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

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