Книга: Разработка ядра Linux
Генерация ошибок и выдача информации
Генерация ошибок и выдача информации
Существует несколько подпрограмм ядра, которые позволяют легко сигнализировать о наличии дефектов кода, обеспечивать объявления об ошибках и выводить необходимую информацию. Две наиболее часто используемые — это BUG()
и BUG_ON()
. При вызове эти функции создают ситуацию oops
, которая проявляется в выводе обратной трассировки стека ядра и сообщения об ошибке. Каким образом эти вызовы генерируют ситуацию oops зависит от аппаратной платформы. Для большинства аппаратных платформ вызовы BUG()
и BUG_ON()
определяются как некоторая недопустимая машинная команда, которая приводит к выводу желаемого сообщения oops
.
Обычно эти вызовы используются в качестве объявления о наличие ошибки (assertion), чтобы сигнализировать о ситуации, которая не должна произойти.
if (bad_thing)
BUG();
Или даже так.
BUG_ON(bad_thing);
О более критичной ошибке можно сигнализировать с помощью функции panic()
. Функция panic()
печатает сообщение об ошибке и останавливает ядро. Ясно, что эту функцию следует использовать только в самой плохой ситуации.
if (terrible_thing)
panic("foo is %ld!n", foo);
Иногда необходимо просто вывести на консоль трассировку стека, чтобы облегчить отладку. В этих случаях используется функция dump_stack()
. Эта функция отображает на консоль содержимое регистров процессора и обратную трассировку вызовов функций.
if (!debug_check) {
printk(KERN_DEBUG "выдать некоторую информацию...n");
dump_stack();
}
- С чего необходимо начать
- Дефекты ядра
- Функция printk()
- Сообщения Oops
- Конфигурационные параметры отладки ядра
- Генерация ошибок и выдача информации
- Магическая клавиша SysRq
- Сага об отладчике ядра
- Исследование и тестирование системы
- Нахождение исполняемых образов с изменениями приводящими к ошибкам
- Если ничто не помогает — обратитесь к сообществу
- A7.1. Генерация указателя
- Сохранение информации о пользователях при миграции
- Перехват ошибок
- Обработка перехваченных ошибок
- При копировании с жесткого диска на «флэшку» иногда появляется сообщение о дополнительной присоединенной информации, кот...
- Сохранение информации из Интернета
- 1.2. Определение количества информации. Единицы измерения количества информации
- 1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации
- 1.4. Кодирование информации
- 7.4. Модель системы автоматизированного проектирования защиты информации
- Источники информации о конкурентах
- Список основных источников информации