Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коваленко 5 курс.docx
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
198.47 Кб
Скачать

19.Отладка программных продуктов

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

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

1.проблема или ошибка зарег-на;

2.выполнен первичный анализ (эксперт подтвердил факт нали­чия ошибки);

3.понятна причина, вызвавшая ошибку;

4.выполнен окончательный анализ проблемы или ошибки;

5.принято решение о начале работы над исправлением;

6.выполнено исправление ошибки;

7.исправление интегрировано в основное пространство;

8.подтверждено исправление ошибки.

Отладка программы — процесс творческий и плохо формализуемый. Алгоритм отладки, основан на анализе данных.

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

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

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

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

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

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

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

Четвертый этап — исправление ошибки. Производится внесе­ние соответс.изменений во все операторы, совместное вы­полнение которых привело к ошибке.

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

Однако процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к про­грам-ию:

1.программу наращивать «сверху вниз», от интерфейса к обра­батывающим подпрогам, тестируя ее по ходу добавления подпрог;

2. выводить юзеру вводимые им данные для контроля и проверять их на допустимость сразу после ввода;

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

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

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