
- •Лабораторная работа № 1 аргументы и опции программы. Функция getopt(). Знакомство с отладчиком gdb
- •Программа выполнения работы.
- •Отладчик gdb
- •Компиляция для отладки
- •Вход-выход
- •Команды gdb
- •Получение справки
- •Начало выполнения отлаживаемой программы
- •Настройки среды
- •Рабочий каталог отлаживаемой программы
- •Ввод и вывод отлаживаемой программы
- •Часто используемые команды
- •Варианты заданий
- •Контрольные вопросы.
- •Составить отчет
- •Варианты заданий.
- •Контрольные вопросы
- •Лабораторная работа № 3 ввод/вывод в linux. Обработка ошибок
- •Программа работы
- •Составить отчет Краткая теория.
- •Системные вызовы
- •Обработка ошибок.
- •Варианты заданий
- •Варианты:
- •Контрольные вопросы
- •Составить отчет.
- •Варианты заданий
- •Составить отчет.
- •Варианты заданий.
- •Составить отчет. Краткая теория.
- •Создание и удаление каталогов
- •Чтение каталогов
- •Варианты заданий.
- •Контрольные вопросы.
Настройки среды
Обычно программа наследует свою среду от gdb, но существует возможность изменения части настроек среды, непосредственно влияющих на программу.
Среда состоит из набора переменных среды и их значений. Переменные среды обычно хранят такие данные, как имя пользователя, домашний каталог, тип терминала и путь поиска для запуска программ. Как правило, переменные среды пользователь устанавливает с помощью оболочки и они наследуются всеми другими программами, которые он вызывает. При отладке может оказаться полезным попробовать запустить программу в измененной среде, не перезапуская gdb.
Команда path каталог добавит указанный 'каталог' в начало переменной среды PATH (пути поиска выполняемых файлов), как для gdb, так и для программы. Можно указать названия нескольких каталогов, разделив их пробелом или системно-зависимым разделителем (':' в UNIX). Если 'каталог' уже находится в списке путей, он переносится в начало, так что поиск в нем будет производиться раньше. Можно использовать строку 'cwd', чтобы сослаться на рабочий каталог, который является текущим в тот момент, когда gdb производит поиск. Если вместо этого пользователь использует '.', то она будет указывать на тот каталог, в котором он выполнил команду path. Отладчик gdb заменяет '.' в аргументе 'каталог' (на текущий путь) до добавления 'каталога' к списку путей поиска.
Команда show paths отобразит список путей для поиска выполняемых файлов (переменную среды PATH).
Вывести значение переменной среды, которое будет передано программе при ее старте, можно с помощью команды show environment [имя_переменной].
Если параметр 'имя-переменной' не указан, команда show environment выведет названия и значения всех переменных среды, передаваемых программе. Можно сократить environment как env.
Присвоить значение переменной среды можно с помощью команды set environment имя_переменной [=значение].'Значение' меняется только для программы, но не для самого gdb. 'Значение' может быть любой строкой; значениями переменных среды являются просто строки, а их интерпретацию обеспечивает программа пользователя. Если параметр 'значение' опущен, переменная устанавливается в пустое значение.
Удаляет переменную из среды, передаваемой отлаживаемой программе, команда unset environment имя-переменной. Эта команда отличается от предыдущей, она удаляет переменную из среды, а не присваивает ей пустое значение.
Рабочий каталог отлаживаемой программы
Программа наследует свой рабочий каталог от gdb. В начальный момент, рабочий каталог gdb наследуется от его родительского процесса (обычно оболочки). Рабочий каталог gdb также служит каталогом по умолчанию для команд отладчика, определяющих действия с файлами.
Команда cd позволяет установить рабочий каталог gdb
cd каталог
Команда pwd выводит рабочий каталог gdb.
Ввод и вывод отлаживаемой программы
Обычно программа использует те же устройства для стандартного ввода и вывода, что и gdb. Для взаимодействия с пользователем gdb переключает терминал в свой собственный терминальный режим, но он записывает терминальные режимы, которые использовала программа, и переключается назад к ним, когда пользователь продолжает выполнение программы. Предупреждение: хотя перенаправление ввода и вывода работает, невозможно использовать каналы для передачи выходных данных отлаживаемой программы другой программе; при попытке это сделать, скорее всего gdb перейдет к отладке неправильной программы.
Команда
info terminal
отображает информацию, записанную gdb о терминальных режимах, которые использует программа. Можно перенаправить ввод и/или вывод программы, используя перенаправление оболочки с помощью команды run. Например:
run > выходной_файл
запускает программу, перенаправляя ее вывод в 'выходной_файл'.
Другим способом перенаправления ввод и вывода является команда tty. Эта команда принимает в качестве аргумента имя файла, который будет использоваться по умолчанию для будущих команд run. Эта команда также сбрасывает управляющий терминал для дочернего процесса для будущих команд run. Например:
tty /dev/ttyb
указывает, что процессы, запущенные последующими командами run, для ввода и вывода используют по умолчанию терминал '/dev/ttyb', и что он будет их управляющим терминалом.
Явное перенаправление в run замещает эффект команды tty для устройств ввода-вывода, но не ее воздействие на управляющий терминал.
Когда вы используется команда tty или перенаправляется ввод в команде run, изменяется только ввод программы. Ввод для gdb по-прежнему происходит через терминал пользователя.