Пошаговая отладка программы что это

Содержание

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

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

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

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

Пошаговая отладка программ с выводом переменных | О самом простом | Program DEBUG

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

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

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

Способы отладки программ.

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

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

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

1. Пошаговая отладка программ с заходом в подпрограммы;

2. Пошаговая отладка программ с выполнением подпрограммы как одного оператора;

3. Выполнение программы до точки останова.

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

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

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

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

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

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

Источник: studopedia.ru

Всё, что вы хотели знать об отладке в IntelliJ IDEA

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

Давайте начнем с основ. Существуют 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) для перехода к достигнутой точке останова.

Читайте также:
Программа ptt что это

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

Вычисление выражений

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

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

Лучшие практики вычисления выражений

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

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

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

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

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

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

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

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

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

Источник: medium.com

Отладка кода в Visual Studio

XYZ School

Для отладки определенной веб-страницы в Visual Studio выберите эту веб-страницу в окне Solution Explorer и щелкните на кнопке Start Debugging (Начать отладку) в панели инструментов. (Если вы в данный момент редактируете веб-страницу, которую собираетесь тестировать, то выбирать ее нет необходимости — просто щелкните на кнопке Start Debugging для ее запуска.)

Дальнейшие события зависят от расположения вашего проекта. Если ваш проект хранится на удаленном веб-сервере или локальном виртуальном каталоге IIS, Visual Studio просто запускает браузер по умолчанию и направляет на соответствующий URL.

Если вы использовали приложение файловой системы, Visual Studio запускает свой встроенный веб-сервер на динамически выбранном порту (который предотвращает конфликт с IIS, если он установлен). Затем Visual Studio запускает браузер по умолчанию и передает ему URL, указывающий на локальный веб-сервер. В каждом случае реальная работа — компиляция страницы и создание объектов страницы — передается рабочему процессу ASP NET.

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

Разделение Visual Studio, веб-сервера и ASP.NET предоставляет несколько интересных возможностей. Например, пока окно браузера открыто, можно по-прежнему вносить изменения в код и HTML-дескрипторы веб-страниц. Завершив внесение изменений, сохраните страницу и щелкните на кнопке Refresh (Обновить) в браузере для ее повторного запроса. Хотя всегда требуется перезапуск всей страницы для просмотра результатов внесенных изменений, это более удобно, нежели повторная сборка целиком всего проекта.

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

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

Пошаговая отладка

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

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

Добавление точки останова

Просмотр содержимого переменной в режиме паузы

Если вы поместите курсор над объектом, то сможете просмотреть все его свойства, щелкнув на маленьком знаке «плюс»:

Просмотр свойств объекта в режиме паузы

Перевести программу в режим паузы можно в любой момент, щелкнув на кнопке паузы в панели инструментов или выбрав в меню Debug (Отладка) команду Break All (Остановить все).

Слежение за переменными

В некоторых случаях может понадобиться отслеживать состояние переменной без постоянного переключения в режим паузы. В таких ситуациях более полезными оказываются окна Locals (Локальные), Autos (Автоматические) и Watch (Слежение), которые позволяют отслеживать переменные во всем приложении:

Окна для слежения за переменными

Окно Описание
Locals Автоматически отображает все переменные в пределах текущей процедуры, предлагая быстрый обзор важных переменных
Autos Автоматически отображает переменные, которые система Visual Studio определила как важные для текущего оператора в коде. Сюда могут входить, например, переменные, к которым получается доступ или которые изменяются в предыдущей строке
Watch Отображает добавленные вами переменные. Установки слежения сохраняются вместе с проектом, чтобы можно было продолжить слежение за переменными позже. Для добавления слежения щелкните правой кнопкой мыши на переменной в коде и выберите в контекстном меню пункт Add Watch (Добавить слежение); в качестве альтернативы дважды щелкните на последней строке в окне Watch и введите имя переменной

Каждая строка в окнах Locals, Autos и Watch предоставляет информацию о типе или классе переменной и ее текущем значении. Если переменная содержит экземпляр объекта, ее можно развернуть и просмотреть приватные члены и свойства.

Например, в окне Locals вы увидите переменную this, которая является ссылкой на текущий объект страницы. Если вы щелкнете на знаке «плюс» возле нее, появится полный список свойств страницы (и некоторые системные значения):

Просмотр текущего объекта страницы в окне Locals

Окна Locals, Autos и Watch позволяют изменять переменные или свойства во время нахождения программы в режиме паузы. Дважды щелкните на текущем значении в столбце Value (Значение) и введите новое значение. Если не хватает какого-то окна слежения, отобразите его вручную, выбрав его в подменю Windows меню Debug.

Расширенные точки останова

Выберите в меню Debug (Отладка) команду Windows —> Breakpoints для отображения окна, в котором перечислены все точки останова в текущем проекте. Окно Breakpoints (Точки останова) предоставляет счетчик попаданий в точку останова. Дважды щелкнув на точке останова, можно переместиться в соответствующее место кода:

Окно Breakpoints

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

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

Location

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

Читайте также:
Guardian phone что это за программа

Condition

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

Hit Count

Используйте эту опцию, если хотите создать точку останова, которая будет приостанавливать процесс выполнения только либо после определенного количества срабатываний (например, хотя бы после 20), либо через определенное количество срабатываний (например, через каждые 5).

Filter

Используйте эту опцию, если хотите включить точку останова только для конкретных процессов или потоков. В ASP.NET эта опция применяется редко, поскольку весь код веб-страниц выполняется рабочим процессом ASP.NET, а он использует пул потоков.

When Hit

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

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

Источник: professorweb.ru

Debug в IDEA

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

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

Однако, если программист считает, что программа, хоть и работает странно, но именно так он и задумывал, обычно заявляет что-то типа «это не баг, это фича». Что породило кучу интернет-мемов.

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

История слова bug

Самой распространённой версией происхождения слова баг является такая легенда.

В сентябре 1947 года ученые Гарвардского Университета тестировали один из первых компьютеров — Mark II. Компьютер не работал, и в процессе проверки всех плат они нашли мотылька, застрявшего между контактами электромеханического реле.

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

Считается, что именно эта смешная история и послужила началом использования слова баг как обозначения ошибки, а слово дебаг (debug) стало синонимом устранения ошибок.

2. Отладка программы

Для устранения багов в своих программах программисты используют специальные программы-отладчики ( debugger ). Некоторые из этих программ умеют отлаживать даже машинный код.

Java-программисты для отладки ( debugging ) своих программ используют IDE. Такие как Intellij IDEA, Eclipse и Net Beans. IntelliJ IDEA на сегодняшний день является самой мощной IDE, поэтому мы рассмотрим процесс отладки на ее примере.

Intellij IDEA может запустить вашу программу в двух режимах:

Режимы запуска программы Иконка на панели Горячие клавиши
Обычное выполнение Shift + F10
Запуск в режиме отладки Shift + F9

С обычным режимом работы вы уже знакомы: программа запустится, отработает и завершится. А вот режим отладки несет для вас немало сюрпризов.

Режим отладки

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

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

  • Точки остановки
  • Пошаговое выполнение
  • Просмотр значений переменных

3. Точки остановки ( Break Points )

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

Чтобы поставить break point на определенной строке, нужно просто кликнуть в IDEA слева от этой строки. Пример:

Точки остановки (Break Points)

В результате строка будет отмечена точкой остановки (break point), и Intellij IDEA подсветит ее красным цветом:

Точки остановки (Break Points) 2

Повторный клик мышкой на панели слева от кода снимет установленную break point .

Также break point можно просто поставить на текущей строке с помощью горячей комбинации клавиш — Ctrl + F8 . Повторное нажатие Ctrl + F8 на строке, где уже есть break point , удаляет ее.

4. Запуск программы в режиме отладки (дебага)

Если у вас в программе есть хотя бы одна точка остановки, вы можете запускать программу в режиме отладки ( Shift + F9 или «иконка с жуком»).

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

Запуск программы в режиме отладки (дебага)

В верхней половине скриншота вы видите код программы с двумя точками остановки. Программа замерла на строке 5 — отмечена синей линией. Строка 5 еще не выполнилась: в консоль еще ничего не выводилось.

В нижней половине экрана вы видите панели режима отладки: панель Debugger , панель Console (вывод на экран), а также набор кнопок для режима отладки.

Вы можете снять вашу программу с паузы (продолжить ее выполнение), если нажмете кнопку Resume Program на панели слева снизу (или нажмете клавишу F9 ).

Запуск программы в режиме отладки (дебага) 3

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

Запуск программы в режиме отладки (дебага) 4

Программа остановилась на второй точке остановки, а в консоль выведены слова Привет и И – признак того, что из трех строк вывода на экран выполнились только две.

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

Если ваша программа работает в режиме отладки, вы также можете выполнять ее пошагово: один шаг — одна строчка . Для пошагового выполнения есть две горячие клавиши: F7 и F8 : каждая из них приводит к выполнению текущей строки кода. Но сначала вам нужно будет все же остановить вашу программу с помощью break point .

Если вы хотите выполнять вашу программу построчно, вам нужно поставить break point в самом начале метода main() и запустить ее в режиме отладки.

Когда программа остановится, вы сможете начать построчное ее выполнение. Одно нажатие клавиши F8 – одна строка.

Вот как будет выглядеть наша программа после остановки и нажатия клавиши F8 один раз:

Запуск программы в режиме отладки (дебага).Пошаговое выполнение

Первая строка метода main уже выполнилась, и текущая строка — вторая. Вы также можете видеть в нижней части скриншота, что на экран уже вывелось слово Привет .

6. Пошаговое выполнение с заходом в методы

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

Допустим, вы пошагово выполняете программу и сейчас остановились на 4-й строке. Если вы нажмете кнопку F8 , IDEA просто выполнит четвертую строку и перейдет к пятой.

Пошаговое выполнение с заходом в методы

А вот если вы нажмете F7 , IDEA будет пошагово выполнять метод main2() :

Пошаговое выполнение с заходом в методы 2

Все очень просто. Если вам не сильно важно, что и как происходит внутри метода, вы нажимаете F8 , если важно — F7 и пошагово выполняете весь его код.

Источник: javarush.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru