Главная страница / 28. Этапы решения задач на компьютерах : 28.4. Отладка программы

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

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

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

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

На каждом этапе необходимо выполнить определенные действия.

  • Ввести исходный текст программы в файл при помощи какого-либо редактора текстов (имя файла, как правило, имеет стандартное расширение – .c для Си и .cpp для С++).
  • Провести компиляцию программы, т.е. преобразовать ее описание на входном языке в семантический эквивалент на машинном языке, называемый объектным модулем (имя файла, в который помещается результат компиляции, обычно имеет расширение .obj или .o). В процессе компиляции программы создается листинг ее исходного текста, содержащий, возможно, сообщения об обнаруженных ошибках. Наличие листинга существенно упрощает поиск и устранение ошибок, допущенных при подготовке программы, и сокращает время, затрачиваемое на ее отладку. Имя файла, в который записывается листинг исходной программы, снабжается обычно расширением .lst.
  • Построить готовый к выполнению загрузочный модуль из объектных модулей, включая модули из внешних библиотек (файл, содержащий готовую программу, имеет имя с расширением .exe). Компоновка – это процесс сборки программы из объектных модулей, в котором они объединяются в исполняемую программу. На этапе компоновки происходит связывание вызовов внешних функций, расположенных в различных объектных модулях. Объектный модуль может быть получен в результате компиляции не только Си-программ, но и программ, написанных на любом другом языке программирования.
  • На этапе построения загрузочного модуля возможно также создание файла-листинга, включающего в себя информацию о размещении собираемых объектных модулей в памяти компьютера. Однако его анализ и использование требует более глубоких знаний основных принципов работы машины, нежели разбор листинга исходной программы.
  • Для запуска в работу готовой к выполнению программы в операционной среде достаточно набрать имя содержащего ее файла на клавиатуре консольного терминала, закончив ввод нажатием клавиши Enter.
  • При наличии ошибок необходимо вернуться на этап редактирования, исправить ошибки и заново откомпилировать программу. То, что программа правильно откомпилировалась, не гарантирует правильности реализации заложенного алгоритма работы. Основной путь – проверка на тестовых примерах. Такой процесс называется отладкой (термин debagging (отладка) буквально означает ловля блох: 9 сентября 1945 года ученые Гарвардского университета, тестирующие машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле; извлеченное насекомое было вклеено в технический дневник с сопроводительной записью: «First actual case of bug being found». Название «баг» прижилось. В настоящее время реликвия хранится в одном из музеев США (рис. 28.1)).
  • При нахождении ошибок в программе необходимо вернуться к начальному редактированию текста, компилированию, сборке и т.д. (рис. 28.2).
img281

Рис. 28.1. Фотография первого «бага»

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

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

img282

Рис.28.2. Этапы отладки программы