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


Отладкапроцесс локализации и устранения ошибок.

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

1) Следует начать с изучения уже доступных исходных и результирующих данных.

2) Сформулировать некоторую гипотезу, которая объясняет получение таких результирующих данных.

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

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

1) Если программа прекращает работу с порождениями "предсмертного дампа памяти" (core-файла), то практически любой отладчик позволит по этому дампу восстановить динамический стек вызовов процедур и локализовать место проблемы.

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

 

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

· Средства пошагового выполнения программы и трассировки (Step over / Trace into)

· Использование точек останова (Breakpoints)

· Просмотр значений переменных (Watch)

· Интерактивное изменение значений переменных (Evaluate / modity)

· Просмотр содержимого стека (Call stack)

· Просмотр содержимого регистров (Register)

 

В процессе разработки и выполнения программ возникают следующие виды ошибок:

– Синтаксические

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

– Логические

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

– Динамические

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

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

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

Вот некоторые типы операций, которые могут привести к исключительным ситуациям:

обработка файла;

выделение памяти;

работа с ресурсами системы;

работа с объектами и формами, создаваемыми во время выполнения программы;

аппаратные конфликты и конфликты операционных систем.

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

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

EAbort Аварийное завершение работы без диалогового окна

EAbstractError Абстрактная ошибка метода

AssertionFailed Утверждают неудавшийся запрос

EBitsError Булев массив ошибок

ECommonCalendarError Календарная ошибка

EDateTimeError Ошибка DateTime

EMonthCalError Ошибка месяца

EConversionError Вызывается Convert

EConvertError Ошибка конвертирования объекта

EDatabaseError Ошибка базы данных

EExternal Ошибка аппаратных средств/Windows

EAccessViolation Нарушение прав доступа

EControlC Произошло аварийной завершение работы пользователем

EExternalException Другая Внутренняя ошибка

EIntError Целочисленная ошибка

EDivByZero Деление на ноль

EIntOverflow Переполнение целого числа

ERangeError Вне диапазона значений

EMathError Ошибка с плавающей запятой

EInvalidArgument Плохое значение аргумента

EInvalidOp Несоответствующая операция

EOverflow Значение слишком большое

EUnderflow Значение слишком маленькое

EZeroDivide Деление на ноль

EStackOverflow Серьёзная проблема Delphi

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

EInvalidPointer Плохой указатель памяти

EOutOfMemory Нет возможности распределить память

EInOutError Ошибка ввода/вывода

EInvalidCast Ошибка произведенная объектом

EInvalidOperation Плохая операция компонента

EMenuError Ошибка пункта меню

EOSError Ошибка операционной системы

EParserError Ошибка синтаксического анализа

EPrinter Ошибка принтера

EPropertyError Ошибка свойства класса

EPropReadOnly Недопустимое обращение к свойству

EPropWriteOnly Недопустимое обращение к свойству

EThread Ошибка потока

EVariantError Различная ошибка

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



Дата добавления: 2016-07-05; просмотров: 2521;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.012 сек.