Лабораторная работа "Отладка проекта"
Оценка 4.8

Лабораторная работа "Отладка проекта"

Оценка 4.8
docx
28.06.2020
Лабораторная работа "Отладка проекта"
Лабораторная работа №10.docx

ЛАБОРАТОРНАЯ РАБОТА №10

Отладка проекта

Цель работы состоит в приобретении навыков применения правил и последовательности отладки программного продукта.

 

Теоретические основы.

 

Что нужно делать для создания корректного и устойчивого программного продукта? Как минимум, необходимо:

·         создать надежный кодкорректность которого предусматривается с самого начала;

·         отладить этот код;

·         предусмотреть в нем обработку исключительных ситуаций.

 

Нужно стараться создавать надежный код. Но без отладки пока обойтись невозможно. Роль тестеров в современном процессе разработки ПО велика.

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

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

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

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

 

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

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

· психологически дискомфортна, так как необходимо искать собственные ошибки и, как правило, в условиях ограниченного времени;

· возможно взаимовлияние ошибок в разных частях программы, например, за счет затирания области памяти одного модуля другим из-за ошибок адресации;

· отсутствуют

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

· ручного тестирования;

· индукции;

· дедукции;

· обратного прослеживания.

 

Метод ручного тестирования

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

Метод индукции

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

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

 

Метод дедукции

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

 

Метод обратного прослеживания

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

 

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

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

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

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

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

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

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

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

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

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

 

Отладчик IntelliJ IDEA

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

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

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

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

o    Установить/снять точку останова - Ctrl + F8 (Cmd + F8 для Mac)

o    Возобновить выполнение программы - F9

o    Перейти к следующей инструкции - F8

o    Перейти внутрь функции - F7

o    Приостановить выполнение - Ctrl + F2 (Cmd + F2)

o    Переключить между просмотром списка точек останова и подробной информацией о выбранной точке - Shift + Ctrl + F8 (Shift + Ctrl + F8)

o    Запустить отладку кода с точки на которой стоит курсор - Shift + Ctrl + F9 (если это внутри метода main())

3.      Умный переход внутрь

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

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

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

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

 Руководство пользователя IntelliJ IDEA. Отладчик - 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.

 

Задание

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

Вопросы для закрепления теоретического материала к практическому занятию:

1.      Какие ошибки в программах существуют?

2.      Что понимают под отладкой программы?

3.      Чем отладка отличается от тестирования?

Порядок выполнения отчета по практической работе

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


 

Скачано с www.znanio.ru

ЛАБОРАТОРНАЯ РАБОТА №10 Отладка проекта

ЛАБОРАТОРНАЯ РАБОТА №10 Отладка проекта

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке

Для небольших программ эффективно применение метода обратного прослеживания

Для небольших программ эффективно применение метода обратного прослеживания

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

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

Переход к курсору Иногда вам надо возобновить выполнение программы и остановиться на какой-то другой строчке кода, не создавая точку останова

Переход к курсору Иногда вам надо возобновить выполнение программы и остановиться на какой-то другой строчке кода, не создавая точку останова

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

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

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

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

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

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

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

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

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

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