Что такое отладка программы для чего она нужна

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

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

  1. Синтаксическая ошибка. Неправильное употребление синтаксических конструкций, например употребление оператора цикла For без то или Next.
  2. Семантическая ошибка. Нарушение семантики той или иной конструкции, например передача функции параметров, не соответствующих ее аргументам.
  3. Логическая ошибка . Нарушение логики программы, приводящее к неверному результату. Это наиболее трудный для «отлова» тип ошибки, ибо подобного рода ошибки, как правило, кроются в алгоритмах и требуют тщательного анализа и всестороннего тестирования.

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

Без этого вы не станете программистом! Найти ошибку в коде. Отладка. Как пользоваться отладчиком #23

В каждой современной системе программирования существует специальное средство отладки программ — отладчик (debugger), который позволяет в режиме интерпретации установить контрольные точки, выполнить отдельные участки программы и посмотреть результаты работы операторов. Естественно, что редактор Visual Basic имеет подобное средство, с которым мы сейчас и познакомимся. В вышеописанной программе мы специально допустили ошибки, на примере которых и продемонстрируем работу отладчика VBA.

Замечание

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

Первый шаг отладки — это запуск компилятора: Debug > compile . Компилятор, просматривая код программы, найдет ошибку и выдаст сообщение: sub or Function not defined (Процедура или функция не определены), выделив место ошибки (creatitem) в теле процедуры.

Итак, допущена синтаксическая ошибка, мы сделали опечатку (вместо createitem ввели creatitem), и компилятор стал расценивать это как вызов процедуры пользователя, которая нигде не объявлена. Быстро исправим эту оплошность, добавив злополучную е в код:

Set tsk = Createltem(olTaskltem)

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

Замечание

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

Запуск программы в VBA осуществляется разными способами. Уже упоминалась возможность запуска программы посредством нажатия клавиши или с помощью команды Run SubUserForm меню Run. Однако при таком вызове запускается активная процедура, т. е. процедура, в которой находится курсор. Другим Способом является вызов диалогового окна Macros из меню Tools. В этом окне можно выбрать запускаемую процедуру, не делая ее активной.

Итак, мы запустили программу. Что же происходит? Сразу после запуска появляется диалоговое ОКНО об ошибке: Object variable or With block variable not set (объектная переменная или переменная блока with не определена) и четыре варианта продолжения работы с программой (рис. 22.6):

  1. Continue. Продолжить выполнение программы.
  2. End. Закончить выполнение программы.
  3. Debug. Прервать выполнение программы и перейти в режим отладки.
  4. Help. Вывести подробную справку об ошибке.

Замечание

Хотя в данном случае кнопка Continue не активна, она бывает очень полезна в ряде случаев. Например, при прерывании хода программы комбинацией клавиш + только для проверки контрольных значений в окне Immediate, когда нет необходимости переходить в режим отладки, если все значения удовлетворительны. Кнопка End используется для окончательного прерывания хода программы, как правило, когда ошибка сразу видна и не требует отладочных средств.

Диалоговое окно Run-time error

Рис. 22.6. Диалоговое окно Run-time error ’91’

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

В нашем же случае произошла семантическая ошибка: неправильное присваивание переменной значения ссылки на объект. Для устранения этой ошибки необходимо добавить оператор присваивания set перед переменной tsk. Давайте еще раз запустим программу. На этот раз она успешно завершилась, дойдя до конца и выдав сообщение «Задача успешно поручена».

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

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

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

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

Читайте также:
City car driving что это за программа

Сгенерированная задача

Рис. 22.7. Сгенерированная задача

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

Чтобы создать точку останова, следует в отлаживаемой процедуре установить точку ввода в любом месте строки кода VBA, перед выполнением которой вы хотите остановить выполнение процедуры. Затем нужно выбрать команду > Debug > Toggle Breakpoint или просто нажать клавишу . При этом строка будет выделена коричневым цветом, а на левом поле окна кода появится жирная коричневая точка. Для снятия точки останова нужно еще раз повторить те же действия. Если напротив оператора стоит точка ос танова, это означает, что выполнение программы будет приостановлено перед выполнением этого оператора.

Замечание

Есть и более простой и, на наш взгляд, естественный способ установки точек останова: достаточно просто сделать щелчок мышью по серой полоске у левого края соответствующей строки кода. Снять эту точку можно повторным щелчком по жирной коричневой точке. Наконец, если вы хотите снять все ранее поставленные точки останова, вовсе необязательно снимать все эти точки поодиночке. Достаточно воспользоваться командой меню > Debug > Clear All Breakpoints.

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

  • Инициализация переменной tsk (чему равняется значение по умолчанию).
  • Вызов стандартной функции NOW (действительно ли возвращается текущее время).
  • Установка даты окончания задачи (правильно ли происходит суммирование).

После расстановки точек останова необходимо, как было сказано, указать, значения каких переменных мы хотели бы наблюдать. Естественно, что мы выбрали значения полей tsk.startoate и tsk.DueDate. Для наблюдения за несколькими свойствами или переменными существуют специальные окна Locals Window и Watch Window. Эти окна можно открыть с помощью соответствующих кнопок на панели Debug или команд меню View.

В окне локальных переменных можно наблюдать за значением всех локальных переменных выполняемой в данный момент процедуры, а окно контрольных значений предназначено для постоянного наблюдения за выбранными пользователем переменными или свойствами. Чтобы определить контрольное значение, достаточно выделить в окне модуля любую переменную, выражение или свойство и нажать кнопку Quick Watch на панели инструментов Debug. При этом появится диалоговое окно, в котором указано имя подпрограммы, само выражение, а также его текущее значение (рис. 22.8).

Нажав на расположенную в правой части диалогового окна кнопку Add, можно переместить это выражение в список наблюдаемых контрольных значений в окне Watch. При этом в момент останова отлаживаемой программы весь список наблюдаемых выражений и их значения будут сразу же видны в соответствующем подокне, располагающемся обычно в нижней части экрана. Добавим переменную tsk. star toate вышеописанным способом. Чтобы наблюдать значение переменной, необходимо выполнить следующее действие.

Точки останова и диалоговое окно Quick Watch

Рис. 22.8. Точки останова и диалоговое окно Quick Watch

Пример 22.8. Добавление переменной в окно Add Watch

1R Add Watch. (рис. 22.9)

Итак, точки останова расставлены, окно Add Watch с наблюдаемыми переменными активно, следовательно, с замиранием сердца переходим к трассировке программы. Итак, нажимаем клавишу , как и предполагалось, перед инициализацией переменной происходит останов программы. Все правильно. Теперь давайте посмотрим, как изменились значения переменных В окне Add Watch: tsk.StartDate = 01:01:4501, tsk.StartDate = 01:01:4501, a duration = 5.

Диалоговое окно Add Watch

Рис. 22.9. Диалоговое окно Add Watch

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

Для дальнейшего пошагового выполнения программы можно воспользоваться одним из трех способов:

  1. Step Into. При нажатии клавиши выполняется очередной оператор, после чего выполнение программы приостанавливается и программа становится доступна для корректировки.
  2. Step Over. Нажатие комбинации клавиш + осуществляет вызов вспомогательных процедур и функций за один шаг, что дает возможность не задерживаться на их выполнении.
  3. Step Out. Данная комбинация клавиш ++ позволяет выйти из выполняемой вспомогательной процедуры, не дожидаясь конца ее пошагового выполнения.

Итак, нам необходимо нажать клавишу и посмотреть, чему стало равно значение tsk.startDate. Как и следовало ожидать, переменной было присвоено значение 21.08.01. (текущая дата 21 августа 2001 года). Следовательно, функция Now работает корректно.

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

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

.DueDate = DateAdd(«m», duration, .StartDate)

Замечание

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

В конце рассказа об отладчике мы решили на рис. 22.10 показать панель инструментов Отладка (Debug) с кнопками, используемыми при отладке, а в табл. 22.1 привести краткую справку по всем использованным и неиспользованным средствам отладчика.

Кнопки панели Отладка

Рис. 22.10. Кнопки панели Отладка

Команда Назначение
Compile Компиляция программы
Run Sub/UserForm Запуск процедуры или формы
Break Прерывание выполнения программы +
Reset Остановка выполнения программы
Toggle Breakpoints Установить точку останова
Clear All Breakpoints Снять все точки останова
Step Into Шаг с заходом во вспомогательные процедуры
Step Over Шаг с обходом вспомогательных процедур
Step Out Шаг с выходом из вспомогательной процедуры
Step to Cursor Шаг до курсора. Запускает программу на выполнение до строки с курсором
Set Next Statement Позволяет устанавливать следующий выполняемый оператор
Show Next Statement Показывает следующий выполняемый оператор
Immediate Window Отображает окно отладочных результатов вычисления
Locals Window Отображает окно локальных переменных процедуры
Watch Window Отображает окно контрольных выражений программы
Add Watch Добавляет выражение в окно Watch
Edit Watch Исправляет выражение в окне Watch
Quick Watch Просматривает значение выделенного выражения
Call Stack Позволяет показать стек вызовов процедур в текущий момент. Эта кнопка очень полезна при работе с рекурсивными процедурами
Comment Block Позволяет закомментировать выделенный блок операторов
Uncomment Block Отменяет сделанные комментарии
Toggle Bookmarks Устанавливает закладку
Clear All Bookmarks Снимает все установленные закладки
Find Вызывает диалоговое’ окно поиска, посредством которого можно найти ту или иную переменную, выражение и т. д.

Таблица 22.1. Средства отладчика

К сожалению, не все приемы отладки можно рассмотреть на нашем простейшем примере.

Источник: www.taurion.ru

Как отладка поможет вам стать лучшим разработчиком

Self Improvement

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

  • Все, что может пойти не так, пойдет не так.
  • Code smells (прим.ред. термин, обозначающий код с признаками (запахами) проблем в системе).

И единственное, что сможет противостоять этим горьким реалиям — это отладка.

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

Да, именно отладка. В начале своей карьеры никто (или почти никто) не питает особой любви к отладке. Зачастую она вызывает лишь разочарование и страх. Мы бы предпочли и дальше создавать крутые штуки (А кто не любит создавать крутые штуки!?), вместо того, чтобы часами корпеть над исправлением одной-единственной ошибки.

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

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

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

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

Сначала разберитесь с тем, как устроена система

Очень часто мы, первым делом, “понимаем как устроена проблема” и только потом “понимаем как устроена система”. Однако все должно быть наоборот.

Какое-то время назад я отлаживал проблему в SAP Smart Form. Некоторые значения неправильно отображались в форме, поэтому я отлаживал всю форму целиком в течение двух дней, но так и не смог найти проблему. Излишне говорить, что я был разочарован. В этой проклятой форме не было никаких ошибок. Но затем меня вдруг осенило.

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

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

Устраняйте каждую проблему по отдельности

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

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

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

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

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

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

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

Помните, что жуку (багу) трудно спрятаться, когда его убежище разрезают напополам.

За один раз изменяйте в коде только одну часть

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

Как вы будете себя чувствовать в такой ситуации? Думаю, вы будете задавать себе такой вопрос: “Что, черт возьми, происходит? Этот парень вообще знает, что делает?”

Плохая отладка работает точно так же.

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

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

Проверьте, действительно ли ваши действия исправили ошибку

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

Все хотят верить в то, что ошибка просто исчезла. Человек несколько раз терпел неудачу, но потом что-то случилось и все его злоключения закончились. И, конечно, отсюда следует вывод: “Может этого больше никогда не повторится”. Повторится.

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

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

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

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

И наконец, ведите журнал технических решений

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

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

· Инициатор (кто зарегистрировал вызов)

· Номер телефона или добавочный номер инициатора #

· Текущее состояние (открыто, в процессе, закрыто)

· Дата следующего шага

· Дата окончания работы

· Запрос на разрешение проблемы, разработку #

Читайте также:
Специфика программы что это

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

Как сказал Ричард Паттис:

“При отладке новички добавляют код для исправления положения, а профессионалы удаляют неисправный код.”

  • ТЭГИ
  • Life Lessons
  • Self Improvement

Источник: nuancesprog.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.com

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