Генерация ошибок и выдача информации

Генерация ошибок и выдача информации

Существует несколько подпрограмм ядра, которые позволяют легко сигнализировать о наличии дефектов кода, обеспечивать объявления об ошибках и выводить необходимую информацию. Две наиболее часто используемые — это 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! ", foo);

Иногда необходимо просто вывести на консоль трассировку стека, чтобы облегчить отладку. В этих случаях используется функция dump_stack(). Эта функция отображает на консоль содержимое регистров процессора и обратную трассировку вызовов функций.

if (!debug_check) {

 printk(KERN_DEBUG "выдать некоторую информацию... ");

 dump_stack();

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Генерация заплат

Из книги автора

Генерация заплат Все изменения исходного кода ядра Linux распространяются в виде заплат (patch). Заплаты представляют собой результат вывода утилиты GNU diff(1) в формате, который может подаваться на вход программы patch(1). Наиболее просто сгенерировать заплату можно в случае, когда


20.2. Выдача звукового сигнала

Из книги автора

20.2. Выдача звукового сигнала Заставить консоль генерировать звуковой сигнал в течение определенного периода времени на указанной частоте совсем не сложное дело. Для этого существуют два способа. Первый состоит во включении или отключении постоянной тональной посылки.


1.2. Генерация текста

Из книги автора

1.2. Генерация текста С необходимостью генерации хотя бы простейших фраз разработчики практических систем столкнулись еще на заре их создания. Даже в столь примитивно организованной (в плане дружественности пользовательского интерфейса) среде, как DOS, при попытке


Генерация контента

Из книги автора

Генерация контента Как часто нужно писать статьи, выкладывать новые материалы? В среднем, оптимальный вариант – один раз в сутки. У вас на сайте и во всех ваших соцсетях должно постоянно что-то появляться. Хотя мы пишем значительно больше.Видео удобнее выкладывать на YouTube,


15.4.4. Генерация make-файлов

Из книги автора

15.4.4. Генерация make-файлов Одним из неочевидных преимуществ Unix make по сравнению с базами данных зависимостей, встроенных в многие IDE-среды, является то, что make-файлы представляют собой простые текстовые файлы, т.е. файлы, которые могут создаваться программами.В середине 1980-х


Генерация случайного числа

Из книги автора

Генерация случайного числа Можно сделать из этого настоящую головоломку: написать программу, выполнение которой на компьютере дает число, случайным образом расположенное в данном интервале, например, между 0 и 1. Но это невозможно.Некоторые языки содержат функцию,


2.6.1. Генерация словаря ERwin

Из книги автора

2.6.1. Генерация словаря ERwin Для управления большими проектами ERwin имеет специальный инструмент - ERwin Dictionary, который обеспечивает коллективную работу над диаграммами и позволяет сохранять и документировать различные версии моделей данных. ERwin Dictionary представляет собой


Генерация ключа RSA.

Из книги автора

Генерация ключа RSA. Для генерации вашей собственной уникальной пары открытый/секретный ключ заданного размера, наберите:pgp -kgPGP покажет вам меню рекомендуемых размеров ключа (простой уровень, коммерческий уровень или военный уровень) и запросит требуемый размер ключа


1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации

Из книги автора

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


У11.9 Генерация случайных чисел

Из книги автора

У11.9 Генерация случайных чисел Напишите класс, реализующий алгоритм получения псевдослучайных чисел, основанный на последовательности: ni = f(ni - 1), где функция f задана, а начальное значение n0 определяется клиентом класса. Функция не должна иметь побочных эффектов.


Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий

Из книги автора

Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий Опубликовано 26 июня 2013 21 июня Государственная Дума РФ приняла сразу во втором и третьем чтении Федеральный Закон «О


Генерация пар ключей

Из книги автора

Генерация пар ключей При помощи этого сервиса генерируется пара ключей (открытый ключ/секретный ключ), секретный ключ хранится в файле, защищенном паролем или иными средствами (например, на смарт-карте или при помощи другого аппаратного или программного средства,