Информатика ← ЛабораторныеЛабораторная работа №10

Отладчик системы программирования ОС Unix

Задание

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

Ход работы

Отладчик gdb представляет собой интерактивное средство отладки программ, разрабатываемых в системе программирования GNU Compile Collection. Отладка может производиться путем пошагового интерпретативного выполнения специальным образом скомпилированной программы, позволяющего осуществлять трассировку работы программы с контролем и изменением значений переменных, установку контрольных точек останова либо с помощью обработки посмертного дампа программы (core). Строчный интерфейс отладчика позволяет вести отладку с помощью текстового терминала, а также облегчает удаленную отладку.

Отладка программы производится в интерактивном режиме путем ввода команд с терминала. Запуск отладчика производится из командной строки командой gdb с указанием имени отлаживаемой программы (выполнимого файла в машинных кодах) и, возможно, файла с посмертным дампом core. Отлаживаемая программа перед отладкой должна быть обязательно скомпилирована с колючом компилятора -g.

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

Анализ дампа аварийного завершения (core). В случае фатальной ошибки во время выполнения программа аварийно завершается, а содержимое ее области оперативной памяти дампируется (сохраняется) в файл core. Для отладки такой программы нужно применять соответствующий отладчик к файлам core и a.out (в зависимости от используемой системы программирования, а.out — имя исполняемой программы): gdb -c a.out.core a.out После запуска отладчик попадает в тот блок программы, в котором произошла ошибка, и позволяет просмотреть значения переменных, стек вызова процедур/функций, а также произвести откат с тем, чтобы начерно пройти место аварии со скорретированными значениями переменных. Динамическая отладка (без core) представляет собой пошаговое выполнение программы на тестовых данных. Если автору программы известен набор входных данных, приводящий к ошибке, то отладчик применяется только к оригинальной выполнимой программе: gdb a.out Для пошагового выполнения программы можно установить точку останова на первой строке основной программы, или несколькими строками выше места предполагаемой ошибки (команда break <номер-строки>). Далее необходимо запустить программу командой run, и после остановки на заданной строке программы использовать команды next/step для пошагового выполнения отлаживаемой программы. для вывода текста программы на экран (например, чтобы определить номер первой выполнимой строки основной программы) служит команда list. В процессе пошаговой интерпретации можно отображать текущие значения скалярных переменных командой print. Основные команды отладчика описаны в соответствущем разделе.

Нажатие клавиши в пустой командной строке отладчика вызывает повторение предыдущей команды отладчика. Обычно используется для многократного выполнения команд next/step.

Следует избегать команд next/step, ведущих в языковую среду, т. к. путешествие по кодам библиотек компилятора, например, функции printf, бесполезно для начинающего программиста. Соответствующие исходные тексты системных программ могут быть недоступны в момент отладки, либо они могут быть реализованы на другом языке программирования. Кроме того, такие программы, как правило, компилируются без ключа -g.

Более подробные сведения по отладчику gdb приведены в оригинальном тексте лабораторной, во встроенной документации отладчика и могут быть получены по команде man gdb.

Ссылки

  1. Оригинальный текст лабораторной
  2. Об отладчике IDE Visual Studio 2010
  3. Основные команды GDB