Шрифт:
Благодаря свойствам преемптивности, ядро имеет глобальный счетчик преемптивности. Ядро может быть настроено так, что, если выполняется переход в состояние ожидания, или даже выполняется код, который потенциально может переходить в состояние ожидания при выполнении атомарной операции, то ядро выводит предупреждающее сообщение и обратную трассировку. Потенциальные ошибки, которые детектируются таким образом, включают вызов функции schedule при удерживаемой блокировке, выполнение блокирующего выделения памяти при удерживаемой блокировке, или переход в состояние ожидания при удерживаемой ссылке на данные, связанные с процессором. Эта отладочная инфраструктура может обнаружить очень много ошибок и ее очень рекомендуется использовать.
Следующие конфигурационные параметры позволяют полностью использовать данную возможность.
Генерация ошибок и выдача информации
Существует несколько подпрограмм ядра, которые позволяют легко сигнализировать о наличии дефектов кода, обеспечивать объявления об ошибках и выводить необходимую информацию. Две наиболее часто используемые — это
Обычно эти вызовы используются в качестве объявления о наличие ошибки (assertion), чтобы сигнализировать о ситуации, которая не должна произойти.
Или даже так.
О более критичной ошибке можно сигнализировать с помощью функции
Иногда необходимо просто вывести на консоль трассировку стека, чтобы облегчить отладку. В этих случаях используется функция
Магическая клавиша
Использование магической клавиши
В дополнение к конфигурационному параметру существует вызов
Список возможных комбинаций клавиш можно получить с консоли путем нажатия комбинации клавиш
Если машина заблокирована очень сильно, то она может не отвечать на магические комбинации клавиш
Таблица 18.2. Список поддерживаемых команд SysRq
Команда | Описание |
---|---|
SysRq-b | Перегрузить машину (reboot) |
SysRq-e | Послать сигнал SIGTERM всем процессам, кроме процесса init |
SysRq-h | Отобразить на консоли помощь по использованию комбинаций клавиш SysRq |
SysRq-i | Послать сигнал SIGKILL всем процессам, кроме процесса init |
SysRq-k | Клавиша безопасного доступа: завершить все процессы, связанные с текущей консолью |
SysRq-l | Послать сигнал SIGKILL всем процессам, включая процесс init |
SysRq-m | Отобразить на консоли дамп информации по использованию памяти |
SysRq-o | Завершить работу машины (shutdown) |
SysRq-p | Отобразить на консоли дамп регистров памяти |
SysRq-r | Отключить прямой режим работы клавиатуры (raw mode) |
SysRq-s | Синхронизировать данные смонтированных файловых систем с дисковыми устройствами |
SysRq-t | Отобразить на консоли дамп информации о заданиях |
SysRq-u | Размонтировать все смонтированные файловые системы |
В файле