FreeBSD предоставляет несколько возможностей для отладки системных сбоев и отладки системы - GDB. Чаще всего используемым средством для отладки системы является аварийный дамп (crash dump): копия памяти, которая сохраняется ядром во вторичном хранилище, когда возникает катастрофический сбой. Аварийные дампы создаются процедурой doadump().
Они возникают, если делается системный вызов перезагрузки, в котором указан флаг RB DUMP, или если система сталкивается с невосстановимой - и неожиданной - ошибкой.
Процедура doadump() сохраняет текущий контекст посредством вызова процедуры savectx(), а затем вызывает процедуру dumpsys(), чтобы записать содержимое физической памяти во вторичное хранилище gdb. Точное расположение аварийного дампа можно конфигурировать; большинство систем помещают эту информацию в конец первичного раздела подкачки. Эта операция выполняется точкой входа дампа отконфигурированного драйвера диска.
Аварийный дамп получается из места его размещения на диске посредством программы для отладки системы /sbin/savecore после того, как система перезагружена, а файловые системы проверены. Она создает файл, в которую копируется образ аварийного дампа, savecore делает также для использования в отладке копию начального загружаемого образа ядра. Системный администратор может проверить аварийный дамп с помощью стандартной программы для отладки системы FreeBSD, gdb. Ядро установлено также таким образом, что отладчик gdb, работающий на одной машине, может соединить себя через последовательную линию связи с ядром, работающим на другой машине.
После присоединения он может устанавливать точки останова, проверять и изменять структуры данных ядра и вызывать процедуры ядра на отлаживаемой машине. Такой вид отладки на уровне исходных кодов особенно полезен при разработке драйверов устройств ядра, пока разрабатываемый драйвер сам не является драйвером линии последовательной передачи.
Основные тезисы: Отладка системы, программа для отладки системы, проверка и отладка системы
- 15/05/2010 13:20 - Укорачивание файлов
- 14/05/2010 19:10 - Идентификация файла
- 13/05/2010 11:56 - Разбросанный ввод/вывод
- 21/03/2010 15:36 - Избежание перегрузки с помощью медленного старта
- 12/01/2010 06:53 - Передача информации ядру и от ядра. Вызов sysctl conf в FreeBSD.
- 09/01/2010 18:07 - Автоматическая перезагрузка и выключение системы
- 09/01/2010 17:59 - Конфигурация ядра FreeBSD (Linux)
- 09/01/2010 17:49 - Программа /usr/bin/login
- 09/01/2010 17:42 - /usr/libexec/getty
- 09/01/2010 17:34 - Сценарии запуска системы - rc conf, rc conf freebsd