Eclipse как посмотреть значение переменной
Перейти к содержимому

Eclipse как посмотреть значение переменной

  • автор:

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

В этом кратком руководстве мы увидим, как отлаживать 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 .

  • 1. Обзор
  • 2. Основные понятия
    • 2.1. Режим отладки
    • 2.2. Контрольные точки
    • 2.3. Управление потоком кода
    • 2.4. Перспектива отладки
    • 3.1. Переменные
    • 3.2. Проверка значений
    • 3.3. Отладочная оболочка
    • 3.4. Условные точки останова
    • 3.5. Точки наблюдения
    • 3.6. Триггерные точки
    • 3.7. Удаленная отладка

    Eclipse – программа отладки

    То же действие можно выполнить с помощью Package Explorer, выбрав класс, который содержит метод main, и нажав Alt + Shift + D, J.

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

    Если конфигурация отладки уже создана, вы можете использовать ее для запуска приложения Java, выбрав «Конфигурации отладки» в меню «Выполнить», щелкнув имя конфигурации отладки, а затем нажав кнопку «Отладка».

    Программа отладки

    Пункт меню «Отладка» в меню «Выполнить» можно использовать для перезапуска Java-приложения, которое ранее было запущено в режиме отладки.

    Запустить меню

    Сочетание клавиш для запуска ранее запущенного Java-приложения в режиме отладки – F11. Когда Java-программа запускается в режиме отладки, пользователям предлагается переключиться на перспективу отладки. Перспектива отладки предлагает дополнительные представления, которые можно использовать для устранения неполадок приложения.

    Редактор Java позволяет пользователям размещать точки останова в коде Java. Чтобы установить точку останова, в области редактора щелкните правой кнопкой мыши на панели маркеров и выберите Toggle Breakpoint.

    Редактор Java

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

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

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

    Стек вызовов отладки

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

    Значение переменной

    В меню «Выполнить» есть пункты меню, которые позволяют возобновить выполнение, перейти через строку кода, войти в функцию и т. Д.

    Запустить пункты меню

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

    Eclipse как посмотреть значение переменной

    Я в яве новичок. Поэтому формулировки вопросов будут странные

    Имеется файловая система X с сырцами. Есть 3 компа:
    1. Лаптоп с WinXP — система X смонтирована в R:\, сырцы и jar в R:\hhh\folder1
    2. Некий сервер с Linux — система X смонтирована в /afs, сырцы и jar в /afs/hhh/folder1
    3. Некий отдельный комп с Linux — подпапка системы X смонтирована по ssh с компа №2 — host2:/afs/hhh -> host3:~/fs, сырцы и jar в /home/user/fs/folder1.

    Редактируем и отлаживаемся в eclipse на host1, собираем jar на host2 (scons + навороты), запускаем jar на host3. Оба линукса — специфические, java в них тоже особенные. Роли хостов менять нельзя.

    Запускаем так:
    java -Xrunjdwp:transport=dt_socket,server=y,address=12345 -jar project.jar
    Затем в eclipse стартуем отладку — как applet, порт 12345.
    Запускается вся эта музыка, можно ходить по коду (f5/f6/f7), объекты (this, к примеру) и их члены показываются шикарно. Но когда я пытаюсь посмотреть значение _локальной_ переменной (Ctrl+Shift+I), eclipse заявляет что: «Unable to evaluate the selected expression: To perform an evaluation, an expression must be compiled in the context of a Java project’s build path. The current execution context is not associated with a Java project in the workspace.»

    Вопросов возникло несколько:
    1. Какой путь не соответствует какому?
    2. Как это поправить на host1 или host3?
    3. Где тусуются юзеры эклиспа в интернете? Я пошарился — ни одного вменяемого места так сразу не заметил. eclipse.org вообще как галимый ЖЖ выглядит — форум там есть?

    Re: отладка под eclipse — не видны локальные переменные

    От: Blazkowicz
    Дата: 05.06.09 16:10
    Оценка:

    Здравствуйте, aik, Вы писали:

    aik>Запускаем так:
    aik>java -Xrunjdwp:transport=dt_socket,server=y,address=12345 -jar project.jar
    aik>Затем в eclipse стартуем отладку — как applet, порт 12345.

    А зачем как апплет? Используй обычный Remote Debug. Обычно невозможность увидеть содержимое локальных переменных связана с опциями компиляции Java классов.

    Re: отладка под eclipse — не видны локальные переменные

    От: Majus http://majus.ru
    Дата: 06.06.09 17:51
    Оценка:

    Здравствуйте, aik, Вы писали:

    aik>Я в яве новичок. Поэтому формулировки вопросов будут странные

    aik>Имеется файловая система X с сырцами. Есть 3 компа:
    aik>1. Лаптоп с WinXP — система X смонтирована в R:\, сырцы и jar в R:\hhh\folder1
    aik>2. Некий сервер с Linux — система X смонтирована в /afs, сырцы и jar в /afs/hhh/folder1
    aik>3. Некий отдельный комп с Linux — подпапка системы X смонтирована по ssh с компа №2 — host2:/afs/hhh -> host3:~/fs, сырцы и jar в /home/user/fs/folder1.

    aik>Редактируем и отлаживаемся в eclipse на host1, собираем jar на host2 (scons + навороты), запускаем jar на host3. Оба линукса — специфические, java в них тоже особенные. Роли хостов менять нельзя.

    aik>Запускаем так:
    aik>java -Xrunjdwp:transport=dt_socket,server=y,address=12345 -jar project.jar
    aik>Затем в eclipse стартуем отладку — как applet, порт 12345.
    aik>Запускается вся эта музыка, можно ходить по коду (f5/f6/f7), объекты (this, к примеру) и их члены показываются шикарно. Но когда я пытаюсь посмотреть значение _локальной_ переменной (Ctrl+Shift+I), eclipse заявляет что: «Unable to evaluate the selected expression: To perform an evaluation, an expression must be compiled in the context of a Java project’s build path. The current execution context is not associated with a Java project in the workspace.»

    aik>Вопросов возникло несколько:
    aik>1. Какой путь не соответствует какому?
    aik>2. Как это поправить на host1 или host3?
    aik>3. Где тусуются юзеры эклиспа в интернете? Я пошарился — ни одного вменяемого места так сразу не заметил. eclipse.org вообще как галимый ЖЖ выглядит — форум там есть?

    aik>Заранее спасибо.

    javac -g:source,lines,vars .

    Re[2]: отладка под eclipse — не видны локальные переменные

    От: aik
    Дата: 08.06.09 10:32
    Оценка:

    Здравствуйте, Majus, Вы писали:

    M>javac -g:source,lines,vars .

    tnx! а есть способ это задавать непосредственно в исходном файле .java, на манер прагм в c/c++?

    Re[3]: отладка под eclipse — не видны локальные переменные

    От: Majus http://majus.ru
    Дата: 08.06.09 19:16
    Оценка:

    Здравствуйте, aik, Вы писали:

    aik>Здравствуйте, Majus, Вы писали:

    M>>javac -g:source,lines,vars .

    aik>tnx! а есть способ это задавать непосредственно в исходном файле .java, на манер прагм в c/c++?

    Как при отладке в eclipse выводить отладочную информацию (значения переменных) прям в редакторе кода?

    пример отображения в pycharm

    В eclipse при отладке есть возможность выводить значения переменных в каждой строке редактора кода. Какой настройкой это можно включить? Пример, как это выглядит в pycharm

    Отслеживать
    задан 11 фев 2019 в 21:43
    Artem Iliukhin Artem Iliukhin
    1 2 2 бронзовых знака

    1 ответ 1

    Сортировка: Сброс на вариант по умолчанию

    Насколько я знаю, такой возможности в eclipse нет. Есть возможность просматривать (и менять) значения всех находящихся в области видимости переменных в отдельном виде ( view ) varables ( Alt+Shift+Q, V ), можно воспользоваться видом expressions , который показывает значения выражений (можно, например, специально для отладки написать методы, показывающие что-то в удобном для восприятия виде), и при наведении курсора на переменную в режиме отладки отображается ее содержимое:

    введите сюда описание изображения

    Отслеживать
    ответ дан 3 мар 2019 в 7:22
    3,377 10 10 серебряных знаков 24 24 бронзовых знака
    Оказалось, я видел такую реализацию в конкретной ide на базе eclipse.
    19 апр 2019 в 4:30

    • eclipse
    • отладка
    • настройка
      Важное на Мете
    Похожие

    Подписаться на ленту

    Лента вопроса

    Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

    Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951

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

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