Содержание

Руководство пользователя IntelliJ IDEA. Отладчик

  1. Запуск отладчика

    После того как вы настроите конфигурацию запуска вашего проекта, вы можете запускать его в режиме отладки, нажав Shift + F9

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

  2. Полезные клавиатурные сокращения отладчика

    • Установить/снять точку останова — Ctrl + F8 (Cmd + F8 для Mac)
    • Возобновить выполнение программы — F9
    • Перейти к следующей инструкции — F8
    • Перейти внутрь функции — F7
    • Приостановить выполнение — Ctrl + F2 (Cmd + F2)
    • Переключить между просмотром списка точек останова и подробной информацией о выбранной точке — Shift + Ctrl + F8 (Shift + Ctrl + F8)
    • Запустить отладку кода с точки на которой стоит курсор — Shift + Ctrl + F9 (если это внутри метода main())
  3. Умный переход внутрь

    Иногда вам надо при пошаговой отладке перейти внутрь определенного метода, но не первого который будет вызван. В таком случае вы можете нажать Shift + F7 (Cmd + F7 для Mac) чтобы выбрать из предложенного списка метод который вам нужен. Это может сэкономить вам массу времени.

  4. Удалить контекст вызова функции

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

  5. Переход к курсору

    Иногда вам надо возобновить выполнение программы и остановиться на какой-то другой строчке кода, не создавая точку останова. Это легко — просто нажмите Alt + F9.

  6. Пометить элемент

    Если вы хотите легко видеть какой-то элемент во время отладки, вы можете добавить к нему цветную метку, нажав F11 или выбрав соответствующий пункт в меню вкладки Variables и Watches.

    Когда этот элемент появится в списке, вы увидете его метку.

  7. Вычислить выражение

    В режиме отладки вы можете вычислить любое выражение, с помощью очень мощного инструмента вызываемого нажатием Alt + F8.

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

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

  8. Состояние и настройки точки останова

    Если вы хотите поменять какие-то настройки точки останова, вы можете нажать Shift + Ctrl + F8 (Shift + Cmd + F8 для Mac).Во всплывающем окне вы можете ввести нужные вам параметры.

    Если у вас какой-то элемент имеет метку, вы также можете использовать эту метку в выражениях.

    Чтобы получить список всех точек останова в вашем проекте (с расширенными настройками), снова нажмите Shift + Ctrl + F8 (Shift + Cmd + F8 для Mac).

  9. Точки останова переменной

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

    Alt.

  10. Точки останова по событиям

    Еще одна полезная возможность — вычислить определенное выражение в нужной вам строке кода не прерывая выполнение. Для этого вам нужно кликнуть на панель слева от редактируемого кода напротив нужной строки, зажав Shift.

  11. Временные точки останова

    Для того чтобы создать точку останова которая сработает только один раз, кликните на панель слева от кода зажав

    Shift + Alt.

  12. Отключить точки останова

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

  13. Загрузка изменений и быстрая замена

    Иногда вам нужно внести небольшие изменения в код без прерывания процесса отладки. Так как виртуальная машина Java поддерживает возможность HotSwap, среда разработки в режиме отладки предлагает вам перезагрузить измененные классы когда вы их скомпилируете.

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

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

    Последняя вещь в IntelliJ IDEA о которой вам точно нужно знать это удаленная отладка. Удаленная отладка — подключение отладчика к уже запущенной у вас или на другом компьютере Java машине по сетевому порту. Таким образом можно подключить отладчик к серверу приложений, запущенному на сервере.

    Чтобы создать конфигурацию для удаленного запуска, перейдите к редактированию конфигураций (Edit configurations) и нажмите «добавить конфигурацию удаленного запуска» (Remote).

    Убедитесь что вы указали правильное имя компьютера и порт прежде чем запустить эту конфигурацию.

  15. Настройки

    Если вы хотите поменять настройки отладчика по умолчанию, нажмите Settings → Debugger.

Оригинал статьи

Использование визуального отладчика в NetBeans IDE

Снимок графического интерфейса пользователя — это средство визуальной отладки, помогающее найти исходный код для компонентов графического интерфейса пользователя. Иногда исходный код для компонентов графического интерфейса пользователя бывает трудно найти, а снимок позволяет найти исходный код по графическому интерфейсу, вместо поиска во всём коде проекта. Можно выбирать компоненты из снимка и вызывать задачи из всплывающего меню, чтобы просматривать исходный код компонента, показывать прослушиватели и создавать точки останова в компонентах.

Поиск исходного кода компонентов

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

Команды также можно вызвать из окна ‘Навигатор’. Для этого щелкните правой кнопкой мыши компонент и выберите команду во всплывающем меню.

  1. На снимке графического интерфейса пользователя нажмите кнопку «Определить».

При выборе компонента на снимке среда IDE отобразит подробные сведения о выбранном компоненте в окне «Свойства». Если окно ‘Свойства’ не отображается, выберите ‘Окно > Свойства’ в главном меню.

Figure 2. Снимок графического интерфейса пользователя

Среда IDE также отображает местоположение компонента в иерархии формы в окне навигатора.

Figure 3. Снимок графического интерфейса пользователя

  1. Щелкните кнопку «Определить» правой кнопкой мыши и во всплывающем меню выберите пункт «Перейти к объявлению компонента».

При выборе команды «Перейти к объявлению компонента» среда IDE открывает файл исходного кода в редакторе и перемещает курсор на ту строку в коде, в которой объявляется guessButton .

Figure 4. Строка кода, в которой объявлен компонент

  1. Щелкните кнопку «Определить» правой кнопкой мыши на моментальном снимке и выберите «Перейти к исходному коду компонента».

При выборе команды «Перейти к исходному коду компонента» среда IDE открывает файл исходного кода в редакторе и перемещает курсор на строку исходного кода компонента JButton.

Figure 5. Строка исходного кода компонента

На снимке графического интерфейса можно воспользоваться командой ‘Перейти к добавлению иерархии’, чтобы найти строку исходного кода, где компонент добавляется в соответствующий контейнер. По умолчанию команда ‘Перейти к добавлению иерархии’ отключена. Включить эту команду можно в окне ‘Параметры’.

  1. Откройте окно ‘Параметры’.

  2. В окне ‘Параметры’ перейдите на вкладку ‘Отладчик Java’ в категории Java.

Примечание. В NetBeans IDE 7.1 вкладка ‘Отладчик’ находится в категории ‘Разное’ в том же окне ‘Параметры’.

  1. В списке категорий выберите «Визуальная отладка», а затем выберите Отслеживать местоположения изменений в иерархии компонентов. Нажмите кнопку «ОК».

  2. Остановите сеанс отладки (если он запущен).

Примечание. После включения команды ‘Перейти к добавлению иерархии’ в окне ‘Параметры’ потребуется начать сеанс отладки заново и сделать новый снимок графического интерфейса. После этого можно будет использовать команду.

  1. Начните новый сеанс отладки и сделайте снимок графического интерфейса.

  2. Щелкните компонент правой кнопкой мыши на моментальном снимке графического интерфейса пользователя и выберите «Перейти к добавлению иерархии».

Среда IDE откроет исходный код в редакторе на строке, в которой добавляется компонент.

Figure 6. Строка исходного кода, в которой компонент добавлен в контейнер

Экспорт событий компонента

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

  1. Щелкните правой кнопкой мыши кнопку «Определить» на моментальном снимке и во всплывающем меню выберите «Показать прослушиватели».

При выборе команды «Показать прослушиватели» среда IDE открывает окно «События». Как видно, узел «Особые прослушиватели» развернут.

Figure 7. Строка исходного кода, в которой компонент добавлен в контейнер

  1. Правой кнопкой мыши щелкните com.toy.anagrams.ui.Anagrams$3 в узле «Особые прослушиватели» и во всплывающем выберите команду «Перейти к исходному тексту компонента».

Исходный код открывается в редакторе на той строке, в которой определяется прослушиватель.

  1. Выберите пустое текстовое поле на снимке.

Также можно выбрать текстовое поле guessedWord в окне «Навигатор».

При выборе текстового поля элементы в окне «События» автоматически изменятся, и в окне будут отображены прослушиватели выбранного компонента.

  1. В окне «События» дважды щелкните узел «Журнал событий». При этом откроется окно «Выбор прослушивателя».

Также можно щелкнуть правой кнопкой мыши узел Event Log и выбрать ‘Задать события журналирования’ во всплывающем меню.

  1. В диалоге выберите прослушивающий процесс java.awt.event.KeyListener . Нажмите кнопку «ОК».

Figure 8. Строка исходного кода, в которой компонент добавлен в контейнер

Теперь прослушиватель прослушивает события клавиатуры в текстовом поле.

  1. В приложении «Анаграммы» в текстовом поле введите несколько символов.

При вводе вами символа это событие записывается в журнал. Развернув узел «Журнал событий», вы увидите, что каждое нажатие клавиши записано. Новые события появляются при каждом вводе символов в текстовое поле игры «Анаграммы». Развернув отдельное событие, например keyPressed , вы увидите свойства этого события в журнале.

Figure 9. Строка исходного кода, в которой компонент добавлен в контейнер

Развернув узел «Вызов из…​» в каком-либо событии, вы увидите трассировку стека данного события.

Этот учебный курс познакомил вас с основами визуальной отладки в среде IDE. Визуальный отладчик позволяет найти исходный код и записывать в журнал события компонентов графического интерфейса пользователя. Это намного упрощает отладку приложений с графическим интерфейсом.

Отправить отзыв по этому учебному курсу

Всё, что вы хотели знать об отладке в IntelliJ IDEA | by Jenny V | NOP::Nuances of Programming

Отладка — это один из самых важных этапов процесса разработки. И дело не только в том, что устранение ошибок занимает, вероятно, большую часть времени: она также особенно необходима при создании бизнес-логики, написании алгоритмов и тестировании кода.

Давайте начнем с основ. Существуют 4 типа точек останова в IntelliJ IDEA.

Точка останова для строки кода

Останавливает приложение в момент достижения им строки кода, содержащей данную точку. Этот тип точки останова может быть добавлен только в выполняемую строку. Если она содержит лямбда-выражение, то вы можете выбрать: либо установить регулярную точку, либо останавливать программу только при вызове лямбда-выражения.

Точка останова для метода

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

Точка останова для исключений

Останавливает приложение при выбрасывании Throwable.class или его подклассов.

Точка останова при доступе к полю класса

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

Для создания точки останова используйте “горячие” клавиши Ctrl + F8. Тип точки останова (для строки кода, для метода или для доступа к полю класса) будет зависеть от того, где вы ее создаете. Для просмотра списка всех точек останова используйте Ctrl + Shift + F8.

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

Suspend (Приостановка)

Определяет, следует ли остановить выполнение приложения в момент достижения точки останова. Имеет два возможных значения: All/Thread. При выборе all происходит приостановка всех потоков, когда какой-либо из них достигает контрольной точки. При выборе thread приостанавливается лишь один поток, достигший этой точки.

Condition (Условие)

Эта опция позволяет задать условие, подлежащее проверке каждый раз при достижении точки останова. Если условие возвращает значение true, то выполняется заданное действие, в противном же случае контрольная точка пропускается.

В качестве условия вы можете использовать:

  • различные инструкции, включающие объявления, циклы, анонимные классы и т. д.;
  • this (не используется в статическом контексте), например !(this instanceof User);
  • проверка логических типов или выражений.

Опции логирования

При достижении точки останова в консоль может быть выведено следующее:

1.Сообщение о достижении точки останова: лог сообщает нам Breakpoint reached at package.User.main(User.java:10).

2.Трассировка стека для текущего окна Frame. Это удобно, если вы намерены проверить, какие методы были вызваны до момента достижения точки останова.

3.Вычисление выражения и запись результата в консоль: результат произвольного выражения, например "Creating. .." или users.size().

Remove once hit (Удаление точки останова при ее достижении)

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

Disable until hitting the following breakpoint (Отключение точки останова до момента достижения другой точки)

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

Filters (Фильтры)

Эта IDE от JetBrains позволяет также настраивать работу с точками, отфильтровывая классы/экземпляры/методы и выполняя остановку только в нужных вам местах.

В вашем распоряжении следующие типы фильтров:

  • Catch class filters (классовые фильтры перехвата). Они останавливают приложение при перехвате исключения в заданных классах.
  • Instance filters (фильтры экземпляров класса). Эти фильтры указывают на экземпляры объектов, для которых будет срабатывать точка останова.
  • Class filters (фильтры классов). Они задают классы, в которых будет срабатывать точка.
  • Caller filters (фильтры вызовов). Данный тип фильтров ограничивает действие точки останова в зависимости от вызова текущего метода. Эта опция вам пригодится, если нужно остановиться на точке только в случае вызова этого метода из заданного метода.

Field access/modification (Доступ к полю класса/изменение поля класса)

  • Field access. Используйте эту опцию, чтобы точка останова срабатывала при обращении к полю класса.
  • Field modification. Если вы хотите, чтобы точка останова срабатывала при внесении изменений в поле класса, то выбирайте данную опцию.

Pass count (Количество проходов)

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

Caught/uncaught exception (Обработанное/необработанное исключение)

  • Caught exception. Опция предназначена для срабатывания точки останова при условии, что заданное исключение было обработано.
  • Uncaught exception. Выберите эту опцию для срабатывания точки останова в том случае, если заданное исключение не было обработано. Так вы сможете выявить причины необработанных исключений.

Для логирования отладки используйте точки останова, но не инструкцию System.out.println.

Используйте точки останова для ведения логов вместо добавления в код System.out.print. Это позволит применить более гибкий подход к процессу логирования в приложении, а также избежать написания грязного кода и внесения случайных изменений при выполнении Git-коммитов.

Прибегайте к помощи “горячих” клавиш для добавления точек останова, так вы сэкономите довольно много времени.

Использование “горячих” клавиш открывает прекрасные перспективы более продуктивного программирования. Не забывайте про них.

Объединяйте точки останова в группы.

Вы можете создать группу точек останова, например в том случае, если вам нужно отметить точки для решения какой-либо особой задачи. В диалоговом окне Breakpoints (Ctrl+Shift+F8) выберите сначала точку, которую необходимо добавить в группу, а затем — Move to a group.

Выясните исходную причину критических ошибок.

Точки останова для исключений работают с Throwable.class. Вы можете добавить условие, которое поможет вам останавливать выполнение кода только при выбрасывании Error.class, или вы можете свести всё к MyCustomException.class.

Не используйте точки останова для метода без необходимости.

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

Не удаляйте точки останова полностью.

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

Добавьте описание к точке останова.

Это поможет вам вспомнить, почему вам нужна именно эта точка из числа многих других.

Степпинг (stepping)— это пошаговое выполнение программы.

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

Рассмотрим каждый из них подробнее.

Step over (F8) — Шаг с обходом

Данная команда позволяет перешагнуть через текущую строку кода и перейти к следующей. Реализация методов пропускается, и вы переходите к следующей строке текущего метода.

Step into (F7) — Шаг с заходом

Благодаря этому шагу вы переходите внутрь метода для просмотра его кода. Эта опция подходит для тех случаев, когда вы не уверены, что метод возвращает правильное значение.

Step out (Shift + F8) — Шаг с выходом

При помощи этой команды вы выходите из текущего метода и переходите к вызывающему методу.

Run to cursor(Alt + F9) — Выполнение до курсора

Данная команда продолжает выполнение приложения до текущей позиции курсора.

Force step over (Shift+Alt+F8) — Принудительный шаг с обходом

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

Drop frame — Возврат к предыдущему фрейму

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

Resume program (Ctrl + F9) — Возобновление программы

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

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

В этом окне вы можете видеть созданные объекты, свойства, исключения, значения и т. д. Данная опция удобна для тех случаев, когда вам нужно: 1) убедиться в том, что все свойства инициализированы правильно; 2) уточнить, какие параметры получил метод; 3) посмотреть на трассировку стека исключений.

Step Into (шаг с заходом) применим даже для методов из внешних библиотек.

Иногда внешние библиотеки также могут содержать ошибки. Отладка внешней библиотеки может помочь вам обнаружить неверный код и сообщить о нем ее разработчикам. Или может возникнуть другая проблема. Например, если метод из внешней библиотеки возвращает неожиданное значение, войдите в него для выяснения причины подобного поведения. Возможно, это произошло из-за ошибки в методе объекта equals/hashcode и т. д. или по причине переопределения некоторых классов данной библиотеки в вашем проекте.

Используйте Show Execution Point (Отображение точки выполнения)

Если вы потеряли место, где остановилось выполнение кода, используйте Show Execution Point (Alt + F10) для перехода к достигнутой точке останова.

Просматривайте стек вызовов.

Иногда причина неожиданного поведения может затаиться там, где у вас нет точек останова. Обратитесь к стеку вызовов и посмотрите, какие методы были выполнены. Это поможет вам найти среди них ошибочный. Кроме того, если вы перейдете к другому методу через стек вызовов, вы сможете увидеть предварительно полученные им параметры.

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

Для вычисления выражения используйте клавиши Alt + F8 или кнопку Evaluate.

Вычисляйте все.

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

Вычислитель выражений может выполнять все.

IntelliJ IDEA позволяет вам вычислять не только локальные, но и различные внешние методы или методы java.*. Вычислитель выражений способен даже выполнять методы, отправляющие запрос к другому сервису, давая вам возможность просмотреть подробный ответ.

Будьте аккуратнее с потоками данных (Streams).

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

Отладка иногда является весьма раздражающим и длительным, но при этом необходимым процессом в работе каждого разработчика. И IntelliJ IDEA предоставляет возможности и опции для того, чтобы сделать ее более удобной, простой и эффективной. Можно любить или не любить процесс отладки, но это не меняет то обстоятельство, что он является значимым этапом разработки.

Напоследок поделюсь самым важным практическим советом:

Если вы истинный разработчик, то забудьте о кнопке Run (Запуск) и используйте только Debug.

Читайте также:

  • Приключения аналитика в стране кода: пробуждение силы
  • Школа ленивого разработчика: ускоренный курс по созданию фрагментов кода в VS Code
  • 2 черты отличных программистов

Читайте нас в Telegram, VK и Яндекс.Дзен

Перевод статьи Oleg Kornii: IntelliJ IDEA debugging best practices

Мой опыт работы с Java-отладчиком — Советы для начинающих

Недавно, работая над Java-проектом с IEETA Биоинформатика – UA , мне нужно было провести серьезную отладку кода. Поскольку я был новичком в проекте и не обладал глубокими знаниями кодовой базы проекта, я решил использовать отладчик Java для проверки поведения кода и лучшего понимания процесса, в котором произошла конкретная ошибка. Это тоже было непросто, потому что я никогда не пользовался отладчиком.

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

ПРИМЕЧАНИЕ: В этой статье используются наглядные примеры из IntelliJ IDEA , но те же концепции можно найти и применить в большинстве альтернативных JAVA IDE.

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

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

Каждый отладчик предлагает несколько типов точек останова, таких как:

  • Точки останова строки: Остановите программу при достижении строки кода, в которой была установлена точка останова.
  • Точки останова метода: Остановите программу при входе (или выходе) из указанного метода. Это позволяет вам проверять условия входа или выхода определенного метода.
  • Условные точки останова: Остановка программы при выполнении определенного критерия (условия)
  • Точки останова исключения: Остановите программу, когда Бросаемый или его подклассы отбрасываются.
  • Контрольные точки: Остановите программу, когда указанное поле будет прочитано или записано.

Вот пример точки останова условия в IntelliJ IDEA, установленной в строке номер 73.

В дополнение к установке точек останова, вы также можете удалить , отключить , включить и отключить они. Отключение точки останова чрезвычайно полезно, когда вам не нужно останавливаться на какой-то определенной точке останова на некоторое время. Еще одной полезной возможностью является включение/отключение точек останова, что полезно, потому что при удалении точки останова ее внутренняя конфигурация теряется, поэтому включение/отключение точек останова – это менее сложная операция, которая позволяет временно отключить отдельную точку останова без потери ее параметров.

Пошаговые Действия

Каждый отладчик Java предоставляет набор функций (пошаговых действий), которые позволяют вам перемещаться по различным разделам кода при отладке, в том числе:

  • Перешагнуть: Перешагивает текущую строку и переходит к следующей строке, даже если в текущей строке есть вызовы методов (реализация методов пропущена).
  • Шаг в: Шаги в метод, чтобы проверить, что происходит внутри него.
  • Принудительный Шаг В: Шаги в методе, даже если этот метод пропущен обычным шагом В.
  • Выход: Выходит из текущего метода и переходит к вызывающему методу.
  • Отбросить кадр: Позволяет отменить последний кадр и восстановить предыдущий кадр в стеке. Это может быть полезно, если вы по ошибке зашли слишком далеко или хотите повторно ввести функцию, в которой вы пропустили критическое место.
  • Фильтр шагов: Позволяет пропускать определенные пакеты во время отладки. Вам не нужно перемещаться по всем классам системы JDK, когда вы можете просто отфильтровать типы, которые вам не нужны.

Панель переменных

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

Если вам нужен более практический подход к этой теме, вот это замечательное видео от JetBrains , в котором вы познакомитесь с концепциями, которые я описал, и их реализацией/применением в пользовательском интерфейсе IntelliJ.

заворачивать

Наконец, помните, что отладка иногда может занять больше времени, чем фактическая реализация. Совершенствуя свои навыки отладки Java, всегда старайтесь писать чистый, эффективный код – это имеет огромное значение, когда дело доходит до отладки.

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

И даже при наличии правильных инструментов, когда кажется, что ситуация выходит из-под контроля, всегда стоит сделать перерыв. Ошибка – это не более чем программная головоломка, и иногда вам просто нужно отдохнуть от кода, чтобы решить ошибку.

Оригинал: “https://dev.to/vascoalramos/my-experience-with-java-debugger-beginner-tips-3pj4”

Отладка приложения Java в локальном кластере Service Fabric — Azure Service Fabric

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 3 мин

Это руководство представляет собой вторую часть цикла. Вы узнаете, как подключить удаленный отладчик с помощью Eclipse для приложения Service Fabric. Кроме того, вы узнаете, как перенаправлять журналы из запущенных приложений в расположение, удобное для разработчика.

Из этого цикла руководств вы узнаете, как выполнять следующие задачи:

  • Развертывание приложения Java служб Service Fabric Reliable Services в Azure.
  • Развертывание и отладка приложения в локальном кластере.
  • Развертывание приложения в кластере Azure.
  • Настройка мониторинга и диагностики приложения
  • Настройка процесса непрерывной интеграции и доставки

Из второй части цикла вы узнаете, как выполнять следующие задачи:

  • Отладка приложения Java с помощью Eclipse
  • перенаправление журналов в настраиваемое расположение.

Предварительные требования

Перед началом работы с этим руководством выполните следующие действия:

  • Настройте среду разработки для Mac или Linux. Следуя инструкциям, установите подключаемый модуль Eclipse, Gradle, пакет SDK для Service Fabric и интерфейс командной строки Service Fabric (sfctl).

Скачивание примера приложения для голосования

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

git clone https://github.com/Azure-Samples/service-fabric-java-quickstart

Создайте и разверните приложение в локальном кластере разработки.

Отладка приложения Java с помощью Eclipse

  1. Откройте интегрированную среду разработки (IDE) Eclipse на компьютере и выберите Файл -> Импорт

  2. Во всплывающем окне выберите параметры Общие  -> Существующие проекты в рабочую область и нажмите кнопку «Далее».

  3. В окне импорта проектов выберите параметр Select root directory (Выбрать корневой каталог) и выберите каталог Voting. Если вы работали с руководством из первой части цикла, то каталог Voting находится в каталоге Eclipse-workspace.

  4. Обновите файл entryPoint.sh службы, которую необходимо отладить, так, чтобы он запускал процесс Java с параметрами удаленной отладки. В этом руководстве используется внешний интерфейс без отслеживания состояния: Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh. Для отладки в этом примере задается порт 8001.

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar VotingWeb.jar
    
  5. Обновите манифест приложения, задав для отлаживаемой службы число экземпляров или реплик, равное единице. Эта настройка позволяет избежать конфликтов для порта, используемого для отладки. Например, для служб без отслеживания состояния, задайте InstanceCount="1", а для служб с отслеживанием состояния задайте целевые и минимальные размеры набора реплик, равные 1, следующим образом: TargetReplicaSetSize="1" MinReplicaSetSize="1".

  6. В среде IDE Eclipse выберите Запустить -> Конфигурации отладки -> Удаленное приложение Java, нажмите кнопку Создать, затем установите свойства, как показано ниже, и щелкните Применить.

    Name: Voting
    Project: Voting
    Connection Type: Standard
    Host: localhost
    Port: 8001
    
  7. Установите точку останова на строке 109 в файле Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java.

  8. В обозревателе пакетов щелкните правой кнопкой мыши проект Voting и выберите Service Fabric -> Публикация приложения….

  9. В окне Публикация приложения выберите Local.json в раскрывающемся списке и нажмите кнопку Опубликовать.

  10. В среде IDE Eclipse выберите Запустить -> Конфигурации отладки -> Удаленное приложение Java, щелкните конфигурацию Голосование, которую вы создали ранее, и нажмите кнопку Отладить.

  11. Откройте веб-браузер и перейдите по адресу localhost:8080. Данное действие активирует точку останова, а Eclipse перейдет в перспективу отладки.

Теперь те же шаги можно применить для отладки любого приложения Service Fabric в Eclipse.

Перенаправление журналов приложения в пользовательское расположение

Ниже приведены пошаговые инструкции по перенаправлению журналов из расположения по умолчанию (/var/log/syslog) в пользовательское расположение.

  1. Сейчас приложения, работающие в кластерах Service Fabric для Linux, поддерживают только принятие одного файла журнала. Чтобы настроить приложение, в котором журналы будут всегда записываться в /tmp/mysfapp0.0.log, создайте файл с именем logging.properties в расположении Voting/VotingApplication/VotingWebPkg/Code/logging.properties и добавьте следующее содержимое.

    handlers = java.util.logging.FileHandler
    java.util.logging.FileHandler.level = ALL
    java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
    # This value specifies your custom location.
    # You will have to ensure this path has read and write access by the process running the SF Application
    java. util.logging.FileHandler.pattern = /tmp/mysfapp0.0.log
    
  2. Добавьте в файл Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh следующий параметр для команды выполнения Java:

    -Djava.util.logging.config.file=logging.properties
    

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

    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -Djava.util.logging.config.file=logging.properties -jar VotingWeb.jar
    

На этом этапе вы узнали, как выполнить отладку и получить доступ к журналам приложений при разработке приложений Java в Service Fabric.

Дальнейшие действия

В этой части руководства вы узнали, как выполнить следующие действия:

  • Отладка приложения Java с помощью Eclipse
  • перенаправление журналов в настраиваемое расположение.

Перейдите к следующему руководству:

Развертывание приложения в Azure

5 инструментов отладки, которые могут улучшить производительность Java-разработки

Java — очень мощный язык программирования, популярный с момента своего появления. Как основной язык Android, очень популярной сегодня мобильной платформы, он во многом способствовал развитию индустрии мобильной связи. Таким образом, несомненно, что с постоянным расширением платформы Android спрос на разработчиков Java будет продолжать расти.

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

Тип отладчика

  • Отладчик CLI (отладчик командной строки): GDB, JBD и т. Д.
  • Отладчик IDE (отладчик интегрированной среды разработки): NetBeans, Eclipse и т. Д.
  • Сборный отладчик: JSwat
  • Дамп кучи: jmap, MAT
  • Историческая отладка
  • Динамическое отслеживание
  • Отладка производства

Хорошо, позвольте мне объединить эти прекрасные инструменты отладки.

1. JDB

Java Debugger (JDB) — это эффективный отладчик, который может выявлять и исправлять ошибки в программах Java. Это также простой отладчик командной строки для классов Java. Архитектура отладчика платформы Java (JPDA), включенная в этот отладчик, может усилить проверку и отладку локальной или удаленной JVM (виртуальной машины Java).

JDB также популяренjava ide, Включая IDE NetBeans и IDE Eclipse для поддержки отладки Java, поэтому это очень полезно для разработки Java.

Официальный веб-сайт:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

2. Bugloo

Этот отладчик уровня исходного кода специально разработан для поддержки Scheme compiler-Bigloo. Таким образом, программы, использующие компилятор Bigloo, можно эффективно отлаживать с помощью отладчика Bugloo. Конечно, не только программы Bigloo, но и программы Java или их комбинация могут использовать этот инструмент отладки. Он развернут на архитектуре отладки JVM, которая предоставляет набор стандартных API. Это программное обеспечение экспертного уровня также включает ту же модель отладки, что и GDB, и предоставляет множество функций, которые помогают нам справляться с функциональными проблемами в современных языках программирования.


Официальный веб-сайт:http://www-sop.inria.fr/teams/mimosa/fp/Bugloo/

3.Cricket Cage

Еще один многофункциональный отладчик, который улучшает отладку программ Java, автоматически генерируя тестовые примеры JUnit для повторяющихся ошибок и тестовых сценариев. Следовательно, он может повысить эффективность нашей работы за счет расширения сгенерированного кода. Это также позволяет устанавливать генераторы кода и выполнять программы для разработки соответствующих тестовых примеров. Кроме того, вы можете повторить тест каждой сборки, интегрировав тестовые примеры в файл build.xml.

Официальный веб-сайт:http://cricketcage.sourceforge.net/

4. Artima SuiteRunner

ЭтоПрограммное обеспечение с открытым исходным кодомСвободный набор инструментов с открытым исходным кодом под лицензией очень подходит для тестирования программ Java. Artima SuiteRunner может использоваться как независимый инструмент тестирования для разработки модульных тестов и тестов на соответствие, поддерживающих Java API. Более того, он также может выполнять существующие наборы тестов JUnit вместе с JUnit. Пользователи JUnit также могут воспользоваться помощью отладчика, чтобы гарантировать надежность кода. Он предоставляет пользователям отчеты, файлы конфигурации и пути выполнения, но при этом настаивает на реализации тестовых примеров JUnit, разработанных пользователями.

Официальный веб-сайт:http://www.artima.com/suiterunner/

FindBugs — это программа, которая выполняет статический анализ кода Java для поиска ошибок. Программное обеспечение распространяется бесплатно и распространяется согласно Ограниченной общественной лицензии GNU и ее условиям. Отладчик поддерживает JDK и JRE 1.5.0 или выше. Кроме того, этот инструмент также можно использовать для анализа программ, скомпилированных в версии Java от 1.0 до 1.7. Программное обеспечение FindBugs постоянно совершенствуется, чтобы обеспечить совместимость с платформами более высоких версий и поддержку последней версии.


Официальный веб-сайт:http://findbugs. sourceforge.net/

Последние мысли
Отладка Java — очень сложная область. На рынке доступно множество типов отладчиков. Я надеюсь, что вы сможете выбрать наиболее подходящий инструмент отладки в соответствии с вашими бизнес-целями и объемом программирования. Взаимодействие с другими людьми

Для архитектуры Java я подготовил некоторую информацию о Kafka, Mysql, Tomcat, Docker, Spring, MyBatis, Nginx, Netty, Dubbo, Redis, Netty, облаке Spring, распределенном, высоком параллелизме, настройке производительности и микросервисах для всех. В ожидании информации об архитектурных технологиях, я надеюсь помочь некоторым технологиям преодолеть узкое место, но вы отказываетесь быть посредственным, с нетерпением ждете перемен, хотите войти в первую интернет-компанию или повысить себе зарплату!

Приглашаем всех присоединиться к группе обмена технологиями Java: 1007476384, бесплатная среда Spring, среда Mybatis SpringBoot framework, SpringMVC framework, микросервисы SpringCloud, структура Dubbo, кеш Redis, сообщение RabbitMq, настройка JVM, контейнер Tomcat, обучающие видео по базе данных MySQL и изучение архитектуры составление карты разума
​​​

jdb — отладчик Java

Перейти к Content

jdb помогает находить и исправлять ошибки в программах на языке Java.

ОБЗОР

  jdb  [параметры] [класс] [аргументы]
 
опции
Параметры командной строки, указанные ниже.
класс
Имя класса для начала отладки.
аргументов
Аргументы, переданные методу main() класс .

ОПИСАНИЕ

Отладчик Java, jdb , простой отладчик командной строки для классов Java. Это демонстрация отладчика платформы Java. Архитектура, обеспечивающая проверку и отладку локального или удаленная виртуальная машина Java.

Запуск сеанса jdb

Существует много способов начать сеанс jdb. Наиболее часто используется способ иметь jdb запустить новую виртуальную машину Java (VM) с основным классом отлаживаемого приложения. Это делается путем замены команды jdb на java в командная строка. Например, если основным классом вашего приложения является MyClass, вы используете следующую команду для отладки под JDB:

C:\> jdb MyClass
 

При таком запуске jdb вызывает вторую виртуальную машину Java с любые указанные параметры, загружает указанный класс и останавливает VM перед выполнением первой инструкции этого класса.

Другой способ использовать jdb — подключить его к виртуальной машине Java. что уже запущено. Виртуальная машина, которую нужно отладить jdb должен быть запущен со следующими параметрами. Эти параметры загружают внутрипроцессные библиотеки отладки и указывают тип подключение должно быть выполнено.

-agentlib:jdwp=transport=dt_shmem,server=y,suspend=n
      
 

Например, следующая команда запустит MyClass приложение и разрешить jdb для подключения к нему позже время.

C:\> java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass
 

Затем вы можете подключить jdb к виртуальной машине со следующим команда:

C:\> jdb - прикрепить jdbconn
 

Обратите внимание, что «MyClass» не указан в командной строке jdb . в этом случае, потому что jdb подключается к существующей виртуальной машине вместо запуска нового.

Существует множество других способов подключения отладчика к виртуальной машине. все они поддерживаются jdb . Отладчик платформы Java Архитектура имеет дополнительную документацию по этим варианты подключения. Для получения информации о запуске J2SE 1.4.2 или ранняя виртуальная машина для использования с jdb см. 1.4.2 документация

Основные команды jdb

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

help

.

помощь или ?
Самая важная команда jdb , отображается справка список распознаваемых команд с кратким описанием.
запуск
После запуска jdb и установки всех необходимых точки останова, вы можете использовать эту команду, чтобы начать выполнение отлаженное приложение. Эта команда доступна только при jdb запускает отлаженное приложение (в отличие от подключение к существующей виртуальной машине).
продолжение
Продолжает выполнение отлаживаемого приложения после точка останова, исключение или шаг.
печать
Отображает объекты Java и значения примитивов. Для переменных или полей примитивных типов печатается фактическое значение. За объекты, печатается краткое описание. См дамп приведенную ниже команду для получения дополнительной информации об объекте.

ПРИМЕЧАНИЕ. Чтобы отобразить локальные переменные, класс-контейнер должен были скомпилированы с помощью javac -g опция.

print поддерживает множество простых выражений Java, включая те, у кого есть вызовы методов, например:

  • печать MyClass.myStaticField
  • печать myObj.myInstanceField
  • напечатайте i + j + k (i, j, k — простые числа и либо поля или локальные переменные)
  • печать myObj. myMethod() (если myMethod возвращает ненулевой)
  • напечатать новый java.lang.String(«Hello»).length()
дамп
Для примитивных значений эта команда идентична Распечатать. Для объектов печатает текущее значение каждого поле, определенное в объекте. Статические поля и поля экземпляра включены.

Команда дампа поддерживает тот же набор выражений в качестве команды печати.

резьба
Список потоков, которые выполняются в данный момент. Для каждой нити печатаются его имя и текущий статус, а также индекс, который может использоваться для других команд, например:
4. (java.lang.Thread) 0x1 основной запуск
 
В этом примере индекс потока равен 4, поток является экземпляром java.lang.Thread, имя потока — «main», и в настоящее время работает,
резьба
Выберите поток, который будет текущим. Многие jdb команды основаны на настройке текущего потока. Нить указывается с индексом потока, описанным в команду потоков выше.
где
, где без аргументов выгружает стек текущий поток. , где все сбрасывают стек всех потоки в текущей группе потоков. где индекс потока выгружает стек указанного потока.

Если текущий поток приостановлен (либо из-за такого события, как как точка останова или через команду suspend), локальный переменные и поля могут быть отображены с помощью печати и команды дампа. Команды вверх и вниз выберите, какой кадр стека является текущим.

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

Точки останова могут быть установлены в jdb в номерах строк или в первая инструкция метода, например:

  • остановить на MyClass:22 (устанавливает точку останова на первом инструкция для строки 22 исходного файла, содержащая МойКласс)
  • остановка в java.lang.String.length (устанавливает точку останова в начале метода java. lang.String.length)
  • остановка в MyClass. ( идентифицирует конструктор MyClass)
  • остановка в MyClass. ( определяет статический код инициализации для MyClass)

Если метод перегружен, необходимо также указать его аргумент типы, чтобы можно было выбрать правильный метод для точки останова. Например, «MyClass.myMethod(int,java.lang.String)» или «МойКласс.МойМетод()».

Команда очистки удаляет точки останова, используя синтаксис в «очистить MyClass:45». С помощью прозрачного или команда без аргументов отображает список всех точек останова в настоящее время установлено. Команда cont продолжает выполнение.

Пошаговое выполнение

Пошаговые команды переводят выполнение на следующую строку находится ли он в текущем кадре стека или в вызываемом методе. следующая команда переводит выполнение на следующую строку в текущий кадр стека.

Исключения

Когда возникает исключение, для которого нет оператора catch где-нибудь в стеке вызовов бросающего потока, виртуальная машина обычно печатает трассировку исключения и завершает работу. При работе под jdb , однако управление возвращается к jdb при оскорбительном броске. Ты Затем можно использовать jdb для диагностики причины исключения.

Используйте команду catch, чтобы запустить отлаживаемое приложение. останавливаться на других выброшенных исключениях, например: «поймать java.io.FileNotFoundException» или «поймать мой пакет.BigTroubleException. Любое исключение, являющееся экземпляр класса определенного поля (или подкласса) остановит приложение в том месте, где оно было брошено.

Команда игнорирования отменяет эффект предыдущей поймать команду.

ПРИМЕЧАНИЕ. Команда игнорировать не вызывает отладил виртуальную машину, чтобы игнорировать определенные исключения, только отладчик.

При использовании jdb вместо приложения Java лаунчер в командной строке, jdb принимает многие одинаковые опции как команда java, включая -D, -classpath и -X<опция>.

Следующие дополнительные параметры принимаются jdb :

-help
Отображает справочное сообщение.
-исходный путь <каталог1:каталог2:...>
Использует указанный путь для поиска исходных файлов в указанный путь. Если этот параметр не указан, путь по умолчанию из «.» используется.
-прикрепить <адрес>
Подключает отладчик к ранее запущенной виртуальной машине с помощью механизм соединения по умолчанию.
-слушать <адрес>
Ожидает, пока работающая виртуальная машина подключится по указанному адресу. с помощью стандартного разъема.
-слушать
Ожидает, пока работающая виртуальная машина подключится по любому доступному адресу. с помощью стандартного разъема.
-запуск
Запускает отлаживаемое приложение сразу после запуска jdb. Эта опция устраняет необходимость использования команды run команда. Отлаживаемое приложение запускается, а затем просто останавливается. перед загрузкой начального класса приложения. В этот момент вы можно установить любые необходимые точки останова и использовать cont для продолжить выполнение.
-коннекторы списка
Список соединителей, доступных в этой виртуальной машине
-подключить <имя-соединителя>:<имя1>=<значение1>,…
Подключается к целевой виртуальной машине с помощью именованного соединителя со списком значения аргументов.
-dbgtrace [флаги]
Выводит информацию для отладки jdb.
-тклиент
Запускает приложение на виртуальной машине Java HotSpot(tm) (клиент).
-сервер
Запускает приложение на виртуальной машине Java HotSpot(tm) (сервере).
-J опция
Передайте параметр виртуальной машине Java, используемой для запуска jdb. (Параметры приложения Java виртуальной машины передаются в запустить команду .) Например, -J-Xms48m устанавливает запуск память до 48 мегабайт.

Другие параметры поддерживаются для альтернативных механизмов подключение отладчика и виртуальной машины для отладки. Ява Архитектура отладчика платформы содержит дополнительную документацию по этим варианты подключения.

Параметры перенаправлены процессу отладки

-v -verbose[:class|gc|jni]
Включает подробный режим.
-D <имя>=<значение>
Задает системное свойство.
-classpath <каталоги, разделенные ":">
Список каталогов, в которых нужно искать классы.
-X <опция>
Нестандартная целевая ВМ, опция

СМ. ТАКЖЕ

javac, java, джава, javadoc.

Запуск и отладка Java в Visual Studio Code

Visual Studio Code позволяет выполнять отладку приложений Java с помощью расширения Debugger for Java. Это облегченный отладчик Java, основанный на Java Debug Server, который расширяет языковую поддержку Java™ от Red Hat.

Вот список поддерживаемых функций отладки:

  • Запуск/присоединение
  • Точки останова
  • Исключения
  • Пауза и продолжение
  • Шаг вперед/назад/сверху
  • Переменные
  • Стеки вызовов
  • Резьба
  • Консоль отладки
  • Оценка
  • Горячий код Замена

Отладчик Java — это проект с открытым исходным кодом, который приглашает участников к совместной работе через репозитории GitHub:

  • Отладчик для Java
  • Сервер отладки Java для Visual Studio Code

Если у вас возникнут проблемы при использовании перечисленных ниже функций, вы можете связаться с нами, указав проблему.

Установить

Чтобы получить полную поддержку языка Java в Visual Studio Code, вы можете установить пакет расширений для Java, который включает расширение отладчика для Java.

Установить пакет расширений для Java

Подробную информацию о том, как начать работу с пакетом расширений, можно найти в учебнике «Начало работы с Java».

Configure

По умолчанию отладчик запускается по умолчанию, автоматически находя основной класс и создавая в памяти конфигурацию запуска по умолчанию для запуска вашего приложения.

Если вы хотите настроить и сохранить конфигурацию запуска, вы можете выбрать ссылку создать файл launch.json в представлении Запуск и отладка .

Файл launch.json находится в папке .vscode в вашей рабочей области (корневая папка проекта).

Дополнительные сведения о том, как создать файл launch.json , см. в разделе Конфигурации запуска; для получения более подробной информации о параметрах конфигурации для Java вы можете прочитать Параметры конфигурации.

Запуск и отладка

Расширение отладчика предоставляет несколько способов запуска и отладки приложения Java.

Выполнить из CodeLens

Вы найдете Выполнить|Отладка в CodeLens вашей функции main() .

Другой способ начать отладку — выбрать Запустите меню Java или Debug Java из верхней строки заголовка редактора.

Запуск от нажатия F5

При нажатии F5 отладчик автоматически найдет точку входа вашего проекта и начнет отладку. Вы также можете начать сеанс отладки из представления Run and Debug на боковой панели VS Code. Дополнительные сведения см. в разделе Отладка в VS Code.

В дополнение к поддержке отладки проектов Java, управляемых инструментами сборки, VS Code также поддерживает отладку отдельных файлов Java без какого-либо проекта.

Входные данные сеанса отладки

Консоль отладки по умолчанию в VS Code не поддерживает входные данные. Если вашей программе требуются входные данные из терминала, вы можете использовать встроенный терминал (⌃` (Windows, Linux Ctrl+`)) в VS Code или внешний терминал для его запуска. Вы также можете использовать параметр пользователя java.debug.settings.console для настройки глобальной консоли для всех сеансов отладки Java.

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

Отладчик для Java поддерживает различные точки останова, такие как точки останова строки, условные точки останова, точки останова данных, точки журнала.

Точка останова — условная точка останова

С помощью оценки выражения отладчик также поддерживает условную точку останова. Вы можете установить точку останова на прерывание, когда выражение оценивается как истинное.

Точка останова — точка останова данных

Отладчик может прерваться, когда переменная изменит свое значение. Обратите внимание, что точка останова данных может быть установлена ​​только внутри сеанса отладки. Это означает, что вам нужно сначала запустить приложение и выполнить останов на обычной точке останова. Затем вы можете выбрать поле в ПЕРЕМЕННЫЕ просмотреть и установить точку останова данных.

Точка останова — точки журнала

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

Оценка выражений

Отладчик также позволяет вам оценивать выражения в окне WATCH , а также в консоли отладки.

Замена горячего кода

Еще одна расширенная функция, поддерживаемая отладчиком, — это замена «горячего кода». Горячая замена кода (HCR) — это метод отладки, при котором отладчик для Java передает изменения класса по каналу отладки на другую виртуальную машину Java (JVM). HCR облегчает экспериментальную разработку и способствует итеративному кодированию методом проб и ошибок. С помощью этой новой функции вы можете начать сеанс отладки и изменить файл Java в вашей среде разработки, а отладчик заменит код в работающей JVM. Перезапуск не требуется, поэтому он называется «горячим». Ниже показано, как можно использовать HCR с отладчиком для Java в VS Code.

Вы можете использовать параметр отладки java.debug.settings.hotCodeReplace , чтобы контролировать, как запускать горячую замену кода. Возможные значения настройки:

  • вручную — щелкните панель инструментов, чтобы применить изменения (по умолчанию).
  • auto — Автоматически применять изменения после компиляции.
  • никогда — Отключить горячую замену кода.

Пошаговая фильтрация

Пошаговый фильтр поддерживается расширением для фильтрации типов, которые вы не хотите видеть или выполнять пошагово во время отладки. С помощью этой функции вы можете настроить фильтрацию пакетов в ваших launch. json , чтобы их можно было пропустить при прохождении.

Параметры конфигурации

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

Обратитесь к документации расширения Language Support for Java™ by Red Hat, чтобы получить помощь по настройке проекта.

Для многих часто используемых настроек доступны образцы в конфигурации отладчика Java VS Code. В документе объясняется, как отладчик Java автоматически создает для вас конфигурации и, если вам нужно их изменить, как это сделать с помощью класса Main, различных аргументов, среды, присоединения к другим процессам Java и использования более продвинутых функций.

Ниже приведены все конфигурации, доступные для Launch и Attach . Дополнительные сведения о том, как написать файл launch.json , см. в разделе Отладка.

Launch

  • mainClass (обязательно) — полное имя класса (например, [имя модуля java/]com.xyz.MainApp) или путь к файлу java записи программы.
  • args — аргументы командной строки, переданные программе. Используйте "${command:SpecifyProgramArgs}" для запроса аргументов программы. Он принимает строку или массив строк.
  • sourcePaths — Дополнительные исходные каталоги программы. Отладчик по умолчанию ищет исходный код из настроек проекта. Этот параметр позволяет отладчику искать исходный код в дополнительных каталогах.
  • modulePaths — пути к модулям для запуска JVM. Если не указано, отладчик автоматически разрешит текущий проект.
    • $ Авто — Автоматически разрешать пути к модулям текущего проекта.
    • $Runtime — Пути к модулям в рамках «среды выполнения» текущего проекта.
    • $Test — Пути к модулям в рамках «тестовой» области текущего проекта.
    • !/path/to/exclude — Исключить указанный путь из пути к модулям.
    • /path/to/append — Добавить указанный путь к пути к модулям.
  • classPaths — пути к классам для запуска JVM. Если не указано, отладчик автоматически разрешит текущий проект.
    • $Auto — Автоматически разрешать пути к классам текущего проекта.
    • $Runtime — Пути к классам в рамках «среды выполнения» текущего проекта.
    • $Test — Пути к классам в пределах «тестовой» области текущего проекта.
    • !/path/to/exclude — Исключить указанный путь из путей к классам.
    • /path/to/append — добавить указанный путь к путям к классам.
  • кодировка — параметр file.encoding для JVM. Если не указано, будет использоваться «UTF-8». Возможные значения можно найти в разделе Поддерживаемые кодировки.
  • vmArgs — Дополнительные параметры и системные свойства для JVM (например, -Xms<размер> -Xmx<размер> -D<имя>=<значение>), он принимает строку или массив строк.
  • имя_проекта — предпочтительный проект, в котором отладчик ищет классы. В разных проектах могут быть повторяющиеся имена классов. Этот параметр также работает, когда отладчик ищет указанный основной класс при запуске программы. Это необходимо, когда в рабочей области есть несколько проектов Java, иначе вычисление выражения и условная точка останова могут не работать.
  • cwd — Рабочий каталог программы. По умолчанию ${workspaceFolder} .
  • env — Дополнительные переменные окружения для программы.
  • envFile — Абсолютный путь к файлу, содержащему определения переменных среды.
  • stopOnEntry — Автоматически приостанавливать программу после запуска.
  • консоль — Указанная консоль для запуска программы. Если не указано, используйте консоль, указанную параметром 9.0016 java.debug.settings.console настройка пользователя.
    • internalConsole — Консоль отладки VS Code (входной поток не поддерживается).
    • IntegratedTerminal — Встроенный терминал VS Code.
    • externalTerminal — Внешний терминал, который можно настроить в настройках пользователя.
  • shortenCommandLine — если проект имеет длинный путь к классам или большие аргументы виртуальной машины, командная строка для запуска программы может превышать максимальное ограничение строки командной строки, разрешенное ОС. Этот элемент конфигурации предоставляет несколько подходов к сокращению командной строки. По умолчанию авто .
    • нет — Запустите программу со стандартной командной строкой ‘java {options} classname {args}’.
    • jarmanifest — сгенерируйте параметры пути к классам во временный файл classpath. jar и запустите программу с помощью командной строки «java -cp classpath.jar classname {args}».
    • argfile — Сгенерируйте параметры пути к классам во временный файл аргументов и запустите программу с помощью командной строки «java @argfile {args}». Это значение применимо только к Java 9.и выше.
    • auto — автоматически определять длину командной строки и определять, следует ли укорачивать командную строку с помощью соответствующего подхода.
  • stepFilters — Пропускать указанные классы или методы при пошаговом выполнении.
    • classNameFilters — [ Устарело — заменено skipClasses ] Пропускать указанные классы при пошаговом выполнении. Имена классов должны быть полностью определенными. Подстановочный знак поддерживается.
    • skipClasses — Пропускать указанные классы при пошаговом выполнении. Вы можете использовать встроенные переменные, такие как ‘$JDK’ и ‘$Libraries’, чтобы пропустить группу классов, или добавить конкретное выражение имени класса, например, java. * , *.Foo .
    • skipSynthetics — Пропускать синтетические методы при пошаговом выполнении.
    • skipStaticInitializers — Пропускать методы статического инициализатора при пошаговом выполнении.
    • skipConstructors — Пропускать методы конструктора при пошаговом выполнении.

Присоединить

  • hostName (обязательно) — имя хоста или IP-адрес удаленного отлаживаемого объекта.
  • порт (обязательно) — порт отладки удаленной отлаживаемой программы.
  • processId — используйте средство выбора процесса, чтобы выбрать процесс для присоединения или идентификатор процесса в виде целого числа.
    • ${command:PickJavaProcess} — Используйте средство выбора процессов, чтобы выбрать процесс для присоединения.
    • Целочисленный PID — присоединение к указанному локальному процессу.
  • timeout — значение времени ожидания перед повторным подключением в миллисекундах (по умолчанию 30000 мс).
  • sourcePaths — Дополнительные исходные каталоги программы. Отладчик по умолчанию ищет исходный код из настроек проекта. Этот параметр позволяет отладчику искать исходный код в дополнительных каталогах.
  • имя_проекта — предпочтительный проект, в котором отладчик ищет классы. В разных проектах могут быть повторяющиеся имена классов. Это необходимо, когда в рабочей области есть несколько проектов Java, иначе вычисление выражения и условная точка останова могут не работать.
  • stepFilters — Пропускать указанные классы или методы при пошаговом выполнении.
    • classNameFilters — [ Устарело — заменено skipClasses ] Пропускать указанные классы при пошаговом выполнении. Имена классов должны быть полностью определенными. Подстановочный знак поддерживается.
    • skipClasses — Пропускать указанные классы при пошаговом выполнении. Вы можете использовать встроенные переменные, такие как «$JDK» и «$Libraries», чтобы пропустить группу классов или добавить конкретное выражение имени класса, например java.* , *.Foo .
    • skipSynthetics — Пропускать синтетические методы при пошаговом выполнении.
    • skipStaticInitializers — Пропускать методы статического инициализатора при пошаговом выполнении.
    • skipConstructors — Пропускать методы конструктора при пошаговом выполнении.

Пользовательские настройки

  • java.debug.logLevel : минимальный уровень журналов отладчика, отправляемых в VS Code, по умолчанию предупреждает .
  • java.debug.settings.showHex : Показать числа в шестнадцатеричном формате в переменных , по умолчанию false .
  • java.debug.settings.showStaticVariables : Показать статические переменные в Variables , по умолчанию false .
  • java.debug.settings.showQualifiedNames : Показать полные имена классов в переменных , по умолчанию false .
  • java.debug.settings.showLogicalStructure : Показать логическую структуру для классов Collection и Map в Variables , по умолчанию true .
  • java.debug.settings.showToString : Показать значение ‘toString()’ для всех классов, которые переопределяют метод ‘toString’ в переменных , по умолчанию true .
  • java.debug.settings.maxStringLength : максимальная длина строк, отображаемых в переменных или консоли отладки . Строки длиннее этого предела будут обрезаны. По умолчанию 0 , что означает, что обрезка не выполняется.
  • java.debug.settings.hotCodeReplace : перезагрузить измененные классы Java во время отладки, по умолчанию используется ручной . Убедитесь, что java.autobuild.enabled не отключен для расширения поддержки языка Java. См. вики-страницу Hot Code Replace для получения дополнительной информации об использовании и ограничениях.
    • руководство — щелкните панель инструментов, чтобы применить изменения.
    • auto — Автоматически применять изменения после компиляции.
    • никогда — никогда не применять изменения.
  • java.debug.settings.enableHotCodeReplace : Включить горячую замену кода для кода Java. Убедитесь, что автоматическая сборка не отключена для VS Code Java. См. вики-страницу Hot Code Replace для получения дополнительной информации об использовании и ограничениях.
  • java.debug.settings.enableRunDebugCodeLens : включить поставщика CodeLens для кнопок запуска и отладки над основными точками входа, по умолчанию true .
  • java.debug.settings.forceBuildBeforeLaunch : Принудительное создание рабочей области перед запуском Java-программы, по умолчанию true .
  • java.debug.settings.console : указанная консоль для запуска программы Java по умолчанию имеет значение IntegratedTerminal . Если вы хотите настроить консоль для определенного сеанса отладки, измените конфигурацию консоли в launch.json .
    • внутренняя консоль — Консоль отладки кода VS (входной поток не поддерживается).
    • IntegratedTerminal — Встроенный терминал VS Code.
    • externalTerminal — Внешний терминал, который можно настроить в настройках пользователя.
  • java.debug.settings.exceptionBreakpoint.skipClasses : Пропускать указанные классы при прерывании работы по исключению. Вы можете использовать встроенные переменные, такие как «$JDK» и «$Libraries», чтобы пропустить группу классов или добавить конкретное выражение имени класса, например java. * , *.Foo .
  • java.debug.settings.stepping.skipClasses : Пропустить указанные классы при пошаговом выполнении. Вы можете использовать встроенные переменные, такие как ‘$JDK’ и ‘$Libraries’, чтобы пропустить группу классов, или добавить конкретное выражение имени класса, например, java.* , *.Foo .
  • java.debug.settings.stepping.skipSynthetics : Пропускать синтетические методы при пошаговом выполнении.
  • java.debug.settings.stepping.skipStaticInitializers : Пропускать статические методы инициализации при пошаговом выполнении.
  • java.debug.settings.stepping.skipConstructors : Пропускать методы конструктора при пошаговом выполнении.
  • java.debug.settings.jdwp.limitOfVariablesPerJdwpRequest : максимальное количество переменных или полей, которые можно запросить в одном запросе JDWP. Чем выше значение, тем реже будет запрашиваться отлаживаемый код при расширении представления переменных. Также большое количество может привести к тайм-ауту запроса JDWP. По умолчанию 100.
  • java.debug.settings.jdwp.requestTimeout : время ожидания (мс) запроса JDWP, когда отладчик связывается с целевой JVM. По умолчанию 3000.
  • java.debug.settings.vmArgs : Аргументы виртуальной машины по умолчанию для запуска программы Java. Например, используйте «-Xmx1G -ea», чтобы увеличить размер кучи до 1 ГБ и включить утверждения. Если вы хотите настроить аргументы виртуальной машины для определенного сеанса отладки, вы можете изменить конфигурацию ‘vmArgs’ в launch.json .
  • java.silentNotification : определяет, можно ли использовать уведомления для сообщения о ходе выполнения. Если это правда, вместо этого используйте строку состояния, чтобы сообщать о ходе выполнения. По умолчанию false .

Устранение неполадок

Если при использовании отладчика возникают проблемы, подробное руководство по устранению неполадок можно найти в репозитории vscode-java-debug GitHub.

Объясняемые распространенные проблемы включают:

  • Расширение поддержки языка Java не запускается.
  • Ошибка сборки. Продолжить?
  • *.java отсутствует в пути к классам. Сообщается только об ошибках синтаксиса.
  • Ошибка программы: не удалось найти или загрузить основной класс X.
  • Программа генерирует исключение ClassNotFoundException.
  • Не удалось выполнить горячую замену кода.
  • Укажите имя хоста и порт удаленной отлаживаемой программы в файле launch.json.
  • Не удалось оценить. Причина: Невозможно выполнить оценку, так как поток возобновлен.
  • Не удается найти класс с основным методом.
  • Нет delegateCommandHandler для vscode.java.startDebugSession при запуске отладчика.
  • Не удалось разрешить путь к классам.
  • Тип запроса «X» не поддерживается. Поддерживаются только «запуск» и «присоединение».

Отзывы и вопросы

Полный список проблем можно найти в репозитории vscode-java-debug. Вы можете отправить сообщение об ошибке или предложить функцию и принять участие в канале vscode-java-debug Gitter, управляемом сообществом.

Следующие шаги

Читайте дальше, чтобы узнать о:

  • Отладка. Узнайте, как использовать отладчик в VS Code с вашим проектом для любого языка.

И для Java:

  • Тестирование Java — тестирование Java в VS Code с помощью расширения Java Test Runner.
  • Расширения Java. Узнайте о других полезных расширениях Java для VS Code.

09.12.2021

6 инструментов отладки Java, которые вы должны знать · Блог Raygun

Последнее обновление этой статьи: январь 2020 г.

В идеальном мире жуки никогда не попадут в производство. Но программные ошибки — неизбежная часть жизни разработчика. Инструменты отладки Java существуют, чтобы помочь нам быстрее устранять ошибки, чтобы мы могли продолжать делать то, что у нас получается лучше всего.

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

1. Отчет о сбоях Raygun

Одна из самых сложных вещей в отладке заключается в том, что вы не всегда знаете, с какими ошибками сталкиваются ваши пользователи. В Raygun Error Monitoring есть все необходимое для обнаружения багов, ошибок и сбоев, которые происходят в рабочей среде и за ее пределами.

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

Установка и настройка занимает всего несколько минут. Raygun может обрабатывать любой объект, который наследуется от класса Throwable . Расширенные функции, такие как хлебные крошки, фильтры и пользовательские теги, также упрощают процесс отладки.

2. Затмение

Eclipse — популярная IDE с открытым исходным кодом, которая используется для разработки на Java, но также имеет плагины для других языков, таких как PHP, Python, Ruby и C#. Платформа Eclipse поставляется с расширенными функциями отладки, которые помогают вам проверять код во время выполнения, что делает его всесторонним инструментом. Большим преимуществом является то, что рабочий процесс Eclipse удобен, поскольку вы можете использовать одну и ту же платформу для разработки и отладка.

Одной из лучших функций Eclipse является перспектива отладки, которая рядом отображает важную отладочную информацию, такую ​​как переменные, точки останова, потоки и стеки вызовов.

С помощью Eclipse вы также можете приостанавливать и возобновлять потоки, выполнять пошаговое выполнение программы, проверять значения и оценивать выражения.

3. NetBeans

NetBeans — еще одна бесплатная среда IDE с открытым исходным кодом. Как и в Eclipse, функции отладки встроены в платформу, поэтому вам нужно только загрузить IDE, чтобы получить инструмент отладки.

NetBeans поставляется в различных пакетах загрузки; для Java вам понадобится версия Java SE или Java EE. Последний также поддерживает HTML5, JavaScript и серверы GlassFish и Tomcat, так что это лучший выбор для более серьезной разработки.

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

NetBeans также предоставляет удобную функцию визуального отладчика, позволяющую отлаживать визуальные элементы приложений с графическим интерфейсом Java и JavaFX. С помощью визуального отладчика вы можете добавлять слушателей к действиям графического интерфейса, просматривать свойства компонентов и иерархию компонентов, а также находить исходный код.

Если вы используете NetBeans, вы также получаете доступ к встроенному инструменту NetBeans Profiler. С помощью профилировщика вы можете проверить использование памяти, производительность ЦП, состояние потоков и другие характеристики вашего Java-приложения. Эти функции работают вместе, чтобы помочь вам оптимизировать скорость и использование памяти, а также сократить накладные расходы.

Поскольку NetBeans была приобретена Apache Software Foundation в начале 2018 года, в будущем можно ожидать большего количества интеграций и расширенных функций, тем более что Apache уже размещает многие проекты Java, от инструмента сборки Maven до сервера Tomcat.

4. IntelliJ IDEA

Помимо Eclipse и NetBeans, IntelliJ IDEA является третьей IDE, которую разработчики Java обычно упоминают, когда вы спрашиваете их, какую IDE они используют. IntelliJ IDEA, разработанная JetBrains, поставляется как с открытым исходным кодом, так и с платной коммерческой версией. В основном это Java IDE, но вы также можете использовать его с другими языками JVM, такими как Groovy, Kotlin и Scala. Коммерческая версия также поддерживает многие среды JVM и не-JVM, такие как Spring, Java EE, Play, Grails, GWT и Vaadin. Более того, обе версии поддерживают разработку для Android — отлично, если вы работаете над несколькими проектами. Как и упомянутые выше отладчики IDE, IntelliJ IDEA также включает встроенный отладчик Java, который работает «из коробки».

IntelliJ IDEA имеет все стандартные функции отладки, которые вы ожидаете от лучшего в своем классе инструмента отладки. IntelliJ IDEA позволяет:

  • Создание и настройка точек останова и точек наблюдения
  • Вычислить выражения
  • Приостановка и возобновление сеанса отладчика
  • Проверить подвесные нити
  • Перейти к исходному коду
  • Анализ использования памяти
  • … И еще

Вы также можете использовать IntelliJ IDEA для удаленной отладки приложений Java.

Встроенная отладка — самая интересная и уникальная функция IntelliJ IDEA. Встроенный отладчик отображает значения переменных в коде прямо рядом со строкой, в которой они использовались. Всякий раз, когда значение переменной изменяется, встроенный отладчик выделяет его другим цветом. Чтобы проверить значения, нет необходимости переходить в окно отладки или наводить указатель мыши на каждую переменную одну за другой, как в случае с Eclipse и NetBeans.

5. Код Visual Studio

Вам не всегда нужно использовать IDE для отладки Java-приложений. Visual Studio Code, кроссплатформенный редактор исходного кода Microsoft, также делает возможной отладку Java с помощью расширения Debugger for Java.

Если вы все равно используете Visual Studio Code для редактирования кода и вам нужен легкий и простой в использовании инструмент отладки для вашего рабочего процесса разработки Java, Visual Studio Code — отличный выбор. Хотя у него не так много расширенных функций, как у отладчиков IDE, он знает все, что вам нужно для быстрой отладки.

Отладчик Java Visual Studio Code основан на сервере отладки Java, который расширяет другое расширение Visual Studio Code под названием Language Support for Java by Red Hat.

Отладчик VS Code позволяет:

  • Выполнение локальной и удаленной отладки
  • Настройка условных точек останова и журналов
  • Перейти к исходному коду
  • Проверка и просмотр переменных
  • Просмотр стеков вызовов
  • Отладка нескольких потоков
  • Вычислить выражения
  • Использовать горячую замену кода

Расширение отладчика VS Code поставляется с множеством параметров конфигурации, которые вы можете проверить в документации.

6. Отладчик Java (jdb)

Если вы не можете (или не хотите) использовать внешнее программное обеспечение для отладки Java, вы также можете отлаживать приложения Java из командной строки. Отладчик Java (jdb) — это простой отладчик командной строки, предоставляемый Oracle. Это эквивалент отладчика GNU (gdb) для виртуальной машины Java. Отладчик Java включен в комплект разработки Java SE, поэтому, если на вашем компьютере установлен JDK, вам больше ничего делать не нужно. Вы можете запустить отладчик с помощью jdb и получить доступ к списку команд с помощью команды help .

Отладчик Java фактически является демонстрацией архитектуры отладчика платформы Java (JDPA). JDPA представляет собой набор из трех интерфейсов: JVM TI (интерфейс виртуальных машин Java), JDWP (проводной протокол отладки Java) и JDI (интерфейс отладки Java). JDPA — это архитектура отладки, которая предоставляет разработчикам инструменты для создания собственных приложений-отладчиков — jdb — это лишь одно из возможных применений JDPA.

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

  • Список, приостановка и возобновление потоков
  • Вычислить выражения
  • Распечатать всю информацию об объекте
  • Установить точки останова
  • Поля часов
  • Метод трассировки вызывает
  • Шаг через код
  • Разрешить и запретить сборку мусора объекта

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

Какой инструмент отладки Java лучше всего подходит для вашего проекта?

Отладка Java не должна быть такой сложной задачей. Использование любого из этих инструментов отладки значительно ускорит процесс отладки. Каждый вариант использования будет отличаться, но оценка ваших вариантов поможет вам выбрать правильный инструмент для вашего проекта.

Отлаживать Java проще, когда знаешь, где ошибка! Raygun Crash Reporting for Java помогает разработчикам обнаруживать, диагностировать и устранять проблемы с большей скоростью и точностью. Возьмите бесплатную 14-дневную пробную версию.

Отладка среды разработки Eclipse для Java-разработчиков

Отладка — это рутинный процесс обнаружения и устранения ошибок, ошибок или аномалий в программах. Это обязательный навык для любого разработчика Java, потому что он помогает найти незаметную ошибку, которая не видна во время проверки кода или возникает только при возникновении определенного условия. Eclipse Java IDE предоставляет множество средств отладки и представлений, сгруппированных в Debug Perspective , чтобы помочь вам, как разработчику, отлаживать эффективно и действенно.

В последний выпуск Eclipse Java Development Tools (JDT), включенный в одновременный выпуск Eclipse Oxygen, включено множество улучшений. Эта статья начнется с руководства для начинающих, которое поможет вам начать отладку. Во второй части статьи вы найдете более подробное руководство по отладке и узнаете, что нового для отладки в Eclipse Oxygen.

Руководство для начинающих по быстрой отладке

Вот несколько простых советов и инструментов, которые помогут вам быстро приступить к отладке вашего проекта Java.

1. Запуск и отладка программы Java

Программу Java можно отладить, просто щелкнув правой кнопкой мыши файл класса редактора Java в проводнике пакетов. Выберите Debug As → Java Application или вместо этого используйте сочетание клавиш Alt + Shift + D, J .

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

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

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

Точка останова — это сигнал, сообщающий отладчику о необходимости временно приостановить выполнение вашей программы в определенной точке кода.

Чтобы определить точку останова в исходном коде, щелкните правой кнопкой мыши в левом поле в редакторе Java и выберите Переключить точку останова . Кроме того, вы можете дважды щелкнуть по этой позиции.

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

Все точки останова можно включить/отключить с помощью Пропустить все точки останова . Точки останова также можно импортировать/экспортировать в рабочую область и из нее.

3. Проекция отладки

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

  • Представление отладки — визуализирует стек вызовов и предоставляет операции над ним.
  • Просмотр точек останова — Показывает все точки останова.
  • Представление переменных/выражений — Показывает объявленные переменные и их значения. Нажмите Ctrl+Shift+d или Ctrl+Shift+i на выбранной переменной или выражении, чтобы отобразить его значение. Вы также можете добавить постоянное наблюдение за выражением/переменной, которое затем будет отображаться в представлении Expressions при включенной отладке.
  • Представление дисплея — позволяет проверять значение переменной, выражение или выделенный текст во время отладки.
  • Представление консоли — здесь отображается вывод программы.

4. Пошаговые команды

Платформа Eclipse помогает разработчикам выполнять отладку, предоставляя кнопки на панели инструментов и сочетания клавиш для управления выполнением программы.

Для получения дополнительной информации об отладке посетите: Справка по пошаговым командам Eclipse

Расширенные инструменты для отладки сложных сценариев

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

1. Точки наблюдения, точки останова исключений, условные точки останова

a. Точки наблюдения — Точка наблюдения — это специальная точка останова, которая останавливает выполнение приложения всякий раз, когда изменяется значение данного выражения/поля, без указания, где это может произойти. Пользователь может указать с помощью Breakpoint Properties… , если он хочет, чтобы выполнение останавливалось, когда выражение наблюдения равно Accessed , Modified или оба.

б. Exception Breakpoints — Точка останова исключения указана для созданного исключения с помощью Добавить точку останова исключения Java .

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

в. Точки останова по условиям — пользователи Eclipse могут создавать условия для ограничения активации точек останова.

Точка останова будет активирована, только если значение логического значения b истинно. Можно задать количество попаданий, чтобы остановить выполнение при n-м попадании в точку останова. Точка останова отключена до тех пор, пока она не будет снова включена, или пока не будет изменено количество попаданий, или программа не завершится.

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

– Eclipse IDE позволяет отлаживать приложения, работающие на другой виртуальной машине Java (JVM) или даже на другой машине. Вы можете создать новую конфигурацию отладки типа Remote Java Application . Чтобы включить удаленную отладку, вам нужно запустить приложение Java с определенными флагами. Тип подключения может быть указан как Socket Attach или Socket Listen. Socket Listen поддерживает несколько входящих соединений.

Новые функции в Eclipse Oxygen

Вот новые функции, добавленные в последнюю версию Eclipse Java IDE.

1. Точки трассировки

Новая функция платформы Eclipse, которая позволяет пользователям создавать условные точки останова для вывода сообщений, не останавливаясь на точках останова и не загромождая базу кода.

Платформа Eclipse создала точку трассировки с шаблоном systrace.

2. Триггерная точка

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

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

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

Триггеры визуализируются с наложением «T» , а точки останова, подавленные триггерами, визуализируются с наложением «T» с вырезом.

2. Логические структуры

В представлении Variables объекты-коллекции непосредственно показывают содержащиеся в них элементы, а не их внутреннюю структуру. Логические структуры теперь активированы по умолчанию в версии Oxygen. Показать логическую структуру можно отключить, чтобы показать внутреннюю структуру.

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

3. Результат метода после пошаговой операции

Кроме того, новым для выпуска кислорода являются результаты метода. Во время отладки последний результат метода (для возврата или броска), который наблюдался во время Step Into , Step Over или Step Return , отображается в виде первой строки в представлении Variables .

4. Стартовая группа

Также новый тип конфигурации запуска Oxygen Launch Group позволяет последовательно запускать несколько других конфигураций запуска с настраиваемыми действиями после запуска каждого члена группы. Новые группы запуска можно создать с помощью диалоговых окон Run → Run Configurations … или Run → Debug Configurations … .

Группировка и сортировка точек останова

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

Точки останова сортируются по Имя по умолчанию, порядок сортировки можно изменить на Время создания .

Для получения дополнительной информации об отладке посетите: Eclipse Remote Debugging Help

Заключение

В этой статье были рассмотрены некоторые важные инструменты отладки и некоторые новые инструменты, предоставляемые Eclipse Java IDE в выпуске Oxygen. Eclipse Oxygen теперь доступен для скачивания здесь.

Для получения более подробной информации пользователь может обратиться к:

  • Справка по отладке Eclipse IDE
  • Советы и рекомендации по отладке Eclipse IDE

10 советов по отладке программы Java в Eclipse

Как отладить Java-программу в Eclipse

Отладка — обязательный навык для любого Java-разработчика. Наличие возможности отлаживать java-программу позволяет найти любую незаметную ошибку, которая не видна при просмотре кода или возникает при предложении определенного условия. Это становится еще более важным, если вы работаете в высокочастотном трейдинге или проекте электронной торговой системы. где времени на исправление ошибки очень мало, и ошибка обычно возникает в производственной среде и не появляется на вашем компьютере с Windows XP. по моему опыту, отладка java-приложений также помогает понять поток java-программ.

В этом учебном пособии по Java мы увидим, как отлаживать программу Java, настроить удаленную отладку в Java, а также некоторые советы по отладке Java в среде Eclipse и Netbeans IDE. Также хорошо знать различные доступные инструменты отладки Java и то, как работает отладчик Java или jdb, но это не обязательно для выполнения отладки в Java.

Чтобы начать отладку Java , вам просто нужно, чтобы ваш проект был настроен в современной среде IDE, такой как Eclipse и Netbeans, и вы готовы к отладке программы Java.

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

Инструменты отладки Java

Я в основном использовал Eclipse IDE и IDE Netbeans для разработки Java, и эти IDE отлично поддерживают отладку Java . Они позволяют вам устанавливать различные точки останова, такие как точки останова строки, условные точки останова или точки останова исключения.

Я предпочитаю Eclipse, а не NetBeans из-за его бесшовной интеграции с удаленной отладкой, потому что большую часть времени ваше приложение будет работать на компьютере с Linux, и у вас может не быть запущенной локальной версии на вашем компьютере, в таком сценарии удаленная отладка чрезвычайно полезна .

Вы можете проверить, как настроить удаленную отладку Java в eclipse, для пошагового руководства по настройке удаленной отладки в eclipse. Помимо Eclipse и IDE Netbeans, вы также можете использовать отладчик Java jdb, который представляет собой простой отладчик Java на основе командной строки и основан на архитектуре отладки платформы Java и может использоваться для локальной или удаленной отладки программ Java.


Параметры отладки Java

Если вы не используете IDE для отладки Java локально, вам необходимо указать параметр отладки Java при запуске программы. Вам также необходимо указать параметр отладки Java, если вы настраиваете сеанс удаленной отладки или используете jdb для отладки Java. Ниже приведены два параметра отладки Java, которые необходимо предоставить программе Java:

9999 2 нагрузки на нагрузку. быть сделано.
Параметры отладки Цель
XDEBUG Используется для запуска программы Java в режиме отладки
xrunjdwp: Transport = dt_socket, сервер = y, y, n.

Suspend=y и n весьма полезны для отладки с самого начала или отладки в любой момент.

Использование jdb для отладки Java-приложения

1) Запустите вашу Java-программу с двумя параметрами, указанными выше, например, нижеприведенная команда запустит Java-программу StockTrading в режиме отладки.

 % java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n StockTrading

После запуска приложения Java в режиме отладки вы можете подключить отладчик Java «jdb» к виртуальной машине с помощью следующую команду:

% jdb -attach 8000

Полную информацию о том, как это сделать, можно найти на странице руководства jdb.0005 отладка java с помощью jdb .

Удаленная отладка Java с помощью eclipse

Это еще одна интересная функция eclipse, которая позволяет вам подключать ваше Java-приложение, работающее на удаленном хосте, и выполнять удаленную отладку . Вам просто нужно запустить приложение Java с параметром отладки Java, описанным выше, а затем подключить приложение из eclipse к указанному порту. Вы можете проверить ссылку ниже для пошагового руководства по удаленной отладке Java с помощью eclipse.

Отладка программы Java в Eclipse и Netbeans

Локальная отладка Java-приложения в любой среде IDE, такой как Eclipse или Netbeans, очень проста, просто выберите проект и нажмите «Отладка» или используйте ярлык отладки, предоставленный IDE. Вы также можете отлаживать отдельный класс Java с помощью основного метода. В Eclipse просто щелкните правой кнопкой мыши и выберите «Отладка как Java-приложение».

10 практических советов по отладке Java

Теперь давайте рассмотрим некоторые советов по отладке Java , который я использовал при отладке Java в Eclipse.

1. Использовать условную точку останова

Eclipse позволяет вам установить условную точку останова для отладки java-программы, которая является точкой останова с условием, и ваш поток остановится только на указанной строке, если условие соответствует, а не просто остановится на этой строке, как в случае точки останова строки .

Чтобы установить условную точку останова, просто дважды щелкните любую строку, где вы хотите установить точку останова, а затем щелкните правой кнопкой мыши —> свойства и затем вставьте условие.

Теперь программа остановится только тогда, когда это конкретное условие истинно и программа работает в режиме отладки.


2. Использовать точку останова исключения

Сколько раз вы были разочарованы NullPointerException, и вы не знаете источник, из которого исходит исключение. Точки останова исключений как раз созданы для таких ситуаций. И Eclipse, и Netbeans позволяют вам устанавливать точки останова для исключений.

Вы можете настроить точки останова исключения на основе исключения Java, такого как NullPointerException или ArrayIndexOutOfBoundException. Вы можете установить точку останова исключения из окна точки останова, и ваша программа остановится, когда вы запустите ее в режиме отладки и возникнет исключение.

3. Переступить, шагнуть внутрь

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

4. Остановка для определенного потока

Это мои собственные советы по отладке Java, которые я сделал с использованием условных точек останова. поскольку большинство моих проектов представляют собой многопоточные Java-программы, и я хочу, чтобы только конкретный поток останавливался на определенной строке, для этого я устанавливаю условную точку останова на этой строке и помещаю Thread.currentThread().getName().equals( «TestingThread»), и это работает фантастически.

5. Осмотр и просмотр

Это две опции меню, которые я использую, чтобы увидеть значение выражения во время отладки java-программы. Я просто выбираю оператор, щелкаю правой кнопкой мыши и проверяю, и он покажет вам значение этого оператора во время отладки. Вы также можете поставить часы на это и это условие, и его значение появится в окне часов.

6. Приостановка и возобновление потока

Вы можете приостановить и возобновить любой поток во время отладки Java-программы из окна отладки. Просто щелкните правой кнопкой мыши любой поток и выберите либо приостановить, либо возобновить. Это также очень полезно при отладке многопоточной программы и моделировании условий гонки.

7. Использование логической структуры

Опция логической структуры очень полезна для изучения содержимого внутри классов коллекций Java, таких как java hashmap или Java Arraylist, во время отладки Java. Логическое представление будет отображать содержимое, такое как ключ и значение хэш-карты, вместо того, чтобы отображать полную информацию о хэш-карте, которая может нас не интересовать, вы можете включать и отключать логическое представление из окна переменных.

8. Ступенчатая фильтрация

Когда мы делаем Шаг в при отладке процесса Управление программой Java переходит от одного класса к другому и в конечном итоге переходит к классам JDK, таким как System или String. Иногда мы просто остаемся в нашем приложении и не хотим переходить к системным классам JDK, в этом случае пошаговая фильтрация великолепна, вы можете просто отфильтровать класс JDK из шага в. Вы можете настроить пошаговую фильтрацию в настройках àJavaàDebugàStep Filtering, а также включать и отключать ее в окне отладки.

9. Стопка копий

Во время отладки Java-программы , если вы хотите скопировать стек потока, который попал в точку останова и был приостановлен, вы делаете это с помощью параметра «Копировать стек». Просто щелкните правой кнопкой мыши Thread в окне отладки и выберите «Копировать стек».

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

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

Другое Статьи по Java Eclipse вам может быть интересно изучить

  • 30 полезных сочетаний клавиш Eclipse для Java-разработчиков (список)
  • Как удаленно отлаживать приложение Java в Eclipse? (учебник)
  • 10 советов по отладке Eclipse, которые должен знать Java-разработчик? (см. здесь)
  • Как прикрепить исходный код для файла JAR в Eclipse? (гид)
  • Ярлык Eclipse для печати операторов System.out.println? (ярлык)
  • Как увеличить размер буфера консоли в Eclipse? (шаги)
  • Как использовать пробелы вместо вкладок в Eclipse? (гид)
  • Как создать исполняемый файл JAR из Eclipse? (пример)
  • 3 книги для изучения Eclipse IDE для разработчиков Java (список)
  • Как увеличить размер кучи Java-программы, работающей в Eclipse? (гид)

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

Настройка облачного отладчика для Java

Обзор

На этой странице описывается, как настроить вашу среду и ваш Java-приложение для использования Cloud Debugger. Для некоторых сред необходимо явно указать область доступа, чтобы Агент Cloud Debugger отправляет данные. Мы рекомендуем установить максимально широкая область доступа, а затем использование управления идентификацией и доступом ограничить доступ. В соответствии с этой передовой практикой установите область доступа для всех облачных API. с вариантом облачная платформа .

Языковые версии и вычислительные среды

Cloud Debugger доступен для Java версий 7, 8, 9 и 11 на следующие вычислительные среды:

Стандартная среда App Engine Гибкая среда App Engine Вычислительный движок Механизм Google Kubernetes Облачный бег Cloud Run для Anthos ВМ и контейнеров, работающих в других местах Облачные функции

Настройка Cloud Debugger

Чтобы настроить Cloud Debugger, выполните следующие задачи:

  1. Убедитесь, что Cloud Debugger API включен для вашего проекта.

  2. Установка и настройка отладчика в вычислительной среде вы используете.

  3. Выберите исходный код.

Проверка включения Cloud Debugger API

Чтобы начать использовать Cloud Debugger, убедитесь, что API Cloud Debugger включен. Cloud Debugger включен по умолчанию для большинства проектов.
Включить API Cloud Debugger

Примечание . Использование Cloud Debugger бесплатно. Однако, вам нужен проект Google Cloud с включенным выставлением счетов, прежде чем вы сможете использовать Cloud Debugger.

Canary моментальные снимки и точки журнала

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

Примечание. Canarying доступен для версии агента отладчика Java. 2,25 и потом.

Чтобы узнать, как использовать отладчик в канареечном режиме, перейдите на снимки отладки и Страницы журналов отладки.

Включение канареечных моментальных снимков и точек журнала

При установке последней версии агента отладчика у вас есть возможность включить или отключить канарейку. Канарейка отключена по умолчанию.

Когда включать канареечные моментальные снимки и точки журнала

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

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

Когда не включать канареечные моментальные снимки и точки журнала

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

Не включайте канареечное копирование, если вы хотите, чтобы снимок запускался быстрее цикл.

Чтобы настроить агент отладчика на неканареечные моментальные снимки и logpoints, перейдите к инструкции по установке для платформы Google Cloud вы используете.

Стандартная среда App Engine

Отладчик включен по умолчанию; настройка не требуется. Отладка страница в консоли Google Cloud попытается отобразить Java исходные файлы, используемые для сборки приложения.

Обратите внимание, что консоль Google Cloud не будет работать, если Получение URL-адреса включен.

Подробнее см. Выбор исходного кода автоматически.

Гибкая среда App Engine

Отладчик включен по умолчанию для среды выполнения Java; нет конфигурации требуется. Страница отладки в консоли Google Cloud попытается отображать исходные файлы Java, используемые для сборки приложения.

Отладчик включен по умолчанию для пользовательских сред выполнения, использующих Предоставленные Google базовые образы для Java. Если используется точка входа по умолчанию, настройка не требуется. Отладка страница в консоли Google Cloud попытается отобразить Java исходные файлы, используемые для сборки приложения.

Для использования Cloud Debugger с пользовательскими средами выполнения, созданными с использованием другой базы изображения, следуйте инструкциям по настройке Compute Engine.

Чтобы узнать больше, см. Выбор исходного кода автоматически.

Google Kubernetes Engine

Примечание. Агент Java не тестируется на Alpine Linux регулярно. В этом Dockerfile показано, как создать минимальный образ с агент установлен.

GCLOUD

Чтобы включить отладчик с помощью gcloud , выполните следующие действия:

  1. Создайте свой кластер с одной из следующих областей доступа:

    • https://www.googleapis.com/auth/cloud-platform предоставляет вашему кластеру доступ ко всем API Google Cloud.

    • https://www.googleapis.com/auth/cloud_debugger предоставляет вашему кластеру доступ только к API отладчика. Используйте эту область доступа, чтобы усилить безопасность вашего кластера.

    кластеры контейнеров gcloud создают пример-имя-кластера \
           --scopes=https://www. googleapis.com/auth/cloud_debugger
     
    Примечание: Вы не можете изменить области доступа кластера после создания.
  2. Добавьте следующие строки в файл Dockerfile , чтобы добавить отладчик. агента в ваше контейнерное приложение и инициализируйте его при развертывании приложения:

    # Создать каталог для отладчика. Добавьте и разархивируйте агент в каталоге.
    ВЫПОЛНИТЬ mkdir /opt/cdbg && \
         wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
         смола xvz -C /opt/cdbg
     

    Чтобы установить более раннюю версию агента, измените URL-адрес на следующее значение:

     https://storage.googleapis.com/cloud-debugger/archive/java/  VERSION_NUMBER  /cdbg_java_agent_gce.tar.gz 

    Заменить VERSION_NUMBER на версию агента вы хотите использовать, например, https://storage. googleapis.com/cloud-debugger/archive/java/2.21/cdbg_java_agent_gce.tar.gz . Canarying недоступен в версиях ниже 2.25. Чтобы получить версии агента отладчика, перейдите в Страница GitHub для агента Java.

  3. Добавьте следующие строки в файл Dockerfile , чтобы запустить Агент отладчика:

    Для отладки с включенным канареечным копированием:

    # Запуск агента при развертывании приложения.
    ЗАПУСК java -agentpath:/opt/cdbg/cdbg_java_agent.so \
        -Dcom.google.cdbg.module=МОДУЛЬ \
        -Dcom.google.cdbg.version=ВЕРСИЯ \
        -Dcom.google.cdbg.breakpoints.enable_canary=true \
        -jar PATH_TO_JAR_FILE
     

    Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

    -Dcom.google.cdbg.breakpoints.enable_canary=false
     

    Замените заполнители в команде следующим образом:

    • PATH_TO_JAR_FILE — это относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

    • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Frontend .

    • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

    • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

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

Для автоматического отображения страницы отладки в консоли Google Cloud исходный код, соответствующий развернутому приложению, см. Выбор исходного кода автоматически.

КОНСОЛЬ

Чтобы включить отладчик с помощью консоли Google Cloud, выполните следующие шаги:

  1. В разделе Пулы узлов выберите Безопасность , а затем выберите Установить доступ для каждого API .

  2. Включить отладчик.

  3. Необязательно: выберите Разрешить полный доступ ко всем облачным API .

  4. Добавьте следующие строки в файл Dockerfile , чтобы запустить Агент отладчика:

    Для отладки с включенным канареечным копированием:

    # Запуск агента при развертывании приложения. 
    ЗАПУСК java -agentpath:/opt/cdbg/cdbg_java_agent.so \
        -Dcom.google.cdbg.module=МОДУЛЬ \
        -Dcom.google.cdbg.version=ВЕРСИЯ \
        -Dcom.google.cdbg.breakpoints.enable_canary=true \
        -jar PATH_TO_JAR_FILE
     

    Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

    -Dcom.google.cdbg.breakpoints.enable_canary=false
     

    Замените заполнители в команде следующим образом:

    • PATH_TO_JAR_FILE — это относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

    • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Внешний интерфейс .

    • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

    • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

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

Для автоматического отображения страницы отладки в консоли Google Cloud исходный код, соответствующий развернутому приложению, см. Выбор исходного кода автоматически.

Compute Engine

Вы можете использовать Cloud Debugger с любым Java-приложением, запущенным в Google Экземпляр Compute Engine. Мы рекомендуем вам включить отладчик на всех запущенных экземпляры вашего приложения.

  1. Убедитесь, что экземпляры виртуальной машины Compute Engine запущены:

    • Образ 64-разрядной версии Debian Linux
    • Java JDK версии 7, 8 или 9
  2. Убедитесь, что ваши экземпляры ВМ Compute Engine созданы с правами доступа параметр области Разрешить полный доступ ко всем облачным API или иметь один из следующие области доступа:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. Загрузите готовый пакет агента:

    # Создать каталог для отладчика. Добавьте и разархивируйте агент в каталоге.
    sudo mkdir /opt/cdbg
         wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce. tar.gz | \
         смола xvz -C /opt/cdbg
     

    Чтобы установить более раннюю версию агента, измените URL-адрес на следующее значение:

     https://storage.googleapis.com/cloud-debugger/archive/java/  VERSION_NUMBER  /cdbg_java_agent_gce.tar.gz 

    Заменить VERSION_NUMBER на версию агента вы хотите использовать, например, https://storage.googleapis.com/cloud-debugger/archive/java/2.21/cdbg_java_agent_gce.tar.gz . Canarying недоступен в версиях ниже 2.25. Чтобы получить версии агента отладчика, перейдите в Страница GitHub для агента Java.

  4. Добавьте агента к вашему вызову Java:
    (Если вы используете Tomcat или Jetty, см. Веб-серверы раздел.)

    Для отладки с включенным канареечным копированием:

    # Запуск агента при развертывании приложения.
    java -agentpath:/opt/cdbg/cdbg_java_agent. so \
        -Dcom.google.cdbg.module=МОДУЛЬ \
        -Dcom.google.cdbg.version=ВЕРСИЯ \
        -Dcom.google.cdbg.breakpoints.enable_canary=true \
        -jar PATH_TO_JAR_FILE
     

    Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

    -Dcom.google.cdbg.breakpoints.enable_canary=false
     

    Замените заполнители в команде следующим образом:

    • PATH_TO_JAR_FILE — это относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

    • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Frontend .

    • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

    • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

Теперь отладчик готов к использованию с вашим приложением.

Для автоматического отображения страницы отладки в консоли Google Cloud исходный код, соответствующий развернутому приложению, см. Выбор исходного кода автоматически.

Веб-серверы

Веб-серверы Java обычно запускаются через процесс начальной загрузки, и каждый веб-сервер имеет собственный способ настройки параметров Java.

Tomcat

Добавьте эту строку в /etc/default/tomcat7 или /etc/default/tomcat8 :

Для отладки с включенным канареечным копированием:

# Запуск агента при развертывании приложения.
JAVA_OPTS="${JAVA_OPTS} -путь_агента:/opt/cdbg/cdbg_java_agent.so \
    -Dcom.google.cdbg.module=МОДУЛЬ \
    -Dcom.google.cdbg.version=ВЕРСИЯ \
    -Dcom.google.cdbg.breakpoints.enable_canary=true"
 

Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

-Dcom.google.cdbg.breakpoints.enable_canary=false
 

Замените заполнители в команде следующим образом:

  • PATH_TO_JAR_FILE — относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

  • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Внешний интерфейс .

  • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

  • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

Если вы запускаете Tomcat в контейнере Docker, вместо этого добавьте эту строку в Dockerfile :

Для отладки с включенным канареечным копированием:

# Запуск агента при развертывании приложения.
ENV JAVA_OPTS -путь_агента:/opt/cdbg/cdbg_java_agent.so \
    -Dcom.google.cdbg.module=МОДУЛЬ \
    -Dcom.google.cdbg.version=ВЕРСИЯ \
    -Dcom.google.cdbg.breakpoints.enable_canary=true
 

Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

-Dcom.google.cdbg.breakpoints.enable_canary=false
 

Замените заполнители в команде следующим образом:

  • PATH_TO_JAR_FILE — относительный путь к JAR-файлу приложения. например,: ~/myapp. jar .

  • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Frontend .

  • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

  • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

Jetty

Добавьте эти строки в /var/lib/jetty/start. d :

Для отладки с включенным канареечным кодом:

--exec
-agentpath:/opt/cdbg/cdbg_java_agent.so \
-Dcom.google.cdbg.module=МОДУЛЬ \
-Dcom.google.cdbg.version=ВЕРСИЯ \
-Dcom.google.cdbg.breakpoints.enable_canary=true
 

Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

-Dcom.google.cdbg.breakpoints.enable_canary=false
 

Замените заполнители в команде следующим образом:

  • PATH_TO_JAR_FILE — это относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

  • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Frontend .

  • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

  • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

Cloud Run и Cloud Run для Anthos

  1. Добавьте следующие команды в файл Dockerfile , чтобы создать каталог в для установки агента отладчика, загрузите Архив агента отладчика и распакуйте его в каталог установки:

    # Создать каталог для отладчика.  Добавьте и разархивируйте агент в каталоге.
    ВЫПОЛНИТЬ mkdir /opt/cdbg && \
         wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
         смола xvz -C /opt/cdbg
     

    Чтобы установить более раннюю версию агента, измените URL-адрес на следующее значение:

     https://storage.googleapis.com/cloud-debugger/archive/java/  VERSION_NUMBER  /cdbg_java_agent_gce.tar.gz 

    Заменить VERSION_NUMBER на версию агента вы хотите использовать, например, https://storage.googleapis.com/cloud-debugger/archive/java/2.21/cdbg_java_agent_gce.tar.gz . Canarying недоступен в версиях ниже 2.25. Чтобы получить версии агента отладчика, перейдите в Страница GitHub для агента Java.

    Найдите вызов Java и добавьте следующий флаг для инициализации Агент отладчика:

    Для отладки с включенным канареечным копированием:

    # Запуск агента при развертывании приложения. 
    ЗАПУСК java -agentpath:/opt/cdbg/cdbg_java_agent.so \
        -Dcom.google.cdbg.breakpoints.enable_canary=true \
        -jar PATH_TO_JAR_FILE
     

    Для отладки с НЕ включенным канареечным копированием установите для флага enable_canary значение ложь :

    -Dcom.google.cdbg.breakpoints.enable_canary=false
     

    Замените заполнители в команде следующим образом:

На странице Debug выберите расположение исходного кода. Чтобы иметь Страница отладки в консоли Google Cloud автоматически отображается исходный код, соответствующий развернутому приложению, см. в разделе Автоматический выбор исходного кода.

Теперь отладчик готов к использованию.

Локальный и другой

  1. Загрузите готовый пакет агента отладчика:

    mkdir/opt/cdbg
    wget -qO- https://storage. googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_service_account.tar.gz | \
        смола xvz -C /opt/cdbg
     
  2. Загрузить учетные данные служебной учетной записи.
    Чтобы использовать агент облачного отладчика для Java на компьютерах , а не , размещенных на Google Cloud, агент должен использовать сервис-аккаунт Google Cloud учетные данные для аутентификации в службе Cloud Debugger.

    Использовать сервисные аккаунты консоли Google Cloud страницу для создания файл учетных данных для существующей или новой служебной учетной записи. Сервис-аккаунт должен иметь как минимум роль Cloud Debugger Agent .

    Поместите файл JSON учетной записи службы вместе с агентом Cloud Debugger для Java.

  3. Добавьте агента к вызову Java:

    Для отладки с включенным канареечным копированием:

    java -agentpath:/opt/cdbg/cdbg_java_agent.so \
      -Dcom. google.cdbg.module=МОДУЛЬ \
      -Dcom.google.cdbg.version=ВЕРСИЯ \
      -Dcom.google.cdbg.breakpoints.enable_canary=true \
      -Dcom.google.cdbg.auth.serviceaccount.enable=true \
      -Dcom.google.cdbg.auth.serviceaccount.jsonfile=/opt/cdbg/gcp-svc.json \
      -jar PATH_TO_JAR_FILE
     

    Для отладки с НЕ включенной канареечностью установите enable_canary флаг для ложь :

    -Dcom.google.cdbg.breakpoints.enable_canary=false
     

    Замените заполнители в команде следующим образом:

    • PATH_TO_JAR_FILE — это относительный путь к JAR-файлу приложения. например,: ~/myapp.jar .

    • МОДУЛЬ — это название приложения. Например: MyApp , Backend или Frontend .

    • ВЕРСИЯ — это версия приложения или идентификатор сборки. Например: v1.0 или build_147 . Вы можете определить номер версии на основе вашего процесса выпуска и установите соответствующее значение.

    • И МОДУЛЬ , и ВЕРСИЯ отображаются в консоли Google Cloud как МОДУЛЬ - ВЕРСИЯ . Например, MyApp — v1.0 или Серверная часть — build_147 .

    • GOOGLE_APPLICATION_CREDENTIALS 9Можно использовать переменную среды 0017. вместо добавления системного свойства auth.serviceaccount.jsonfile .

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