Разработка ядра Linux
Шрифт:
Магическая клавиша
Использование магической клавиши
В
Список возможных комбинаций клавиш можно получить с консоли путем нажатия комбинации клавиш
Если машина заблокирована очень сильно, то она может не отвечать на магические комбинации клавиш
Таблица 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 | Размонтировать все смонтированные файловые системы |
В файле
Сага об отладчике ядра
Многие разработчики ядра давно высказываются о необходимости встроенного в ядро отладчика. К сожалению, Линус не желает видеть отладчик ядра в своем дереве исходного кода, Он уверен, что использование программ-отладчиков приводит к плохому исправлению ошибок неправильно информированными разработчиками. Никто не может поспорить с его логикой — исправления ошибок, построенные на основании хорошего понимания кода скорее всего будут верными. Тем не менее большинство разработчиков ядра все же нуждаются в официальном отладчике, встроенном в ядро. Поскольку такая возможность навряд ли появится в ближайшее время, то взамен было разработано несколько заплат, которые добавляют поддержку отладчика в стандартном ядре. Не смотря на то, что это внешние и неофициальные заплаты, они являются мощными инструментами с высокой функциональностью. Перед тем, как обращаться к этим решениям, посмотрим, на сколько нам может помочь стандартный отладчик ОС Linux — gdb.
Использование отладчика gdb
Для того, чтобы мельком заглянуть внутрь работающего ядра можно использовать стандартный отладчик GNU. Запуск отладчика для работы с ядром почти ни чем не отличается от отладки выполняющегося процесса.
Файл
Опциональный параметр
Можно пользоваться практически всеми командами программы gdb для чтения информации. Например, чтобы напечатать значение переменной можно воспользоваться командой.
Для того, чтобы дизассемблировать код функции можно выполнить следующую команду.
Если ядро было скомпилировано с указанием флага -g (необходимо добавить
К сожалению, на этом заканчиваются возможности использования отладчика gdb. С его помощью никак нельзя изменять данные ядра. Нет возможности пошагово выполнять код ядра, или устанавливать точки остановки (breakpoint). Невозможность изменять структуры данных ядра — это большой недостаток. Хотя очень полезно иметь возможность дизассемблировать код функций, еще более полезной была бы возможность изменять структуры данных.
Отладчик kgdb
Отладчик kgdb — это заплата ядра, которая позволяет с помощью отладчика gdb отлаживать ядро по линии последовательной передачи. Для этого требуется два компьютера. На первом выполняется ядро с заплатой kgdb. Второй компьютер используется для отладки ядра по линии последовательной передачи (нуль-модемный кабель, соединяющий две машины) с помощью gdb. Благодаря отладчику kgdb полностью доступен весь набор функций gdb: чтение и запись любых переменных, установка точек остановки, установка точек слежения (watch points), пошаговое исполнение и др.. Специальные версии kgdb даже позволяют вызывать функции.
Установка kgdb и линии последовательной передачи несколько сложная процедура, но если ее выполнить, то отладка ядра значительно упрощается. Заплата ядра также устанавливает большое количество документации в каталог
Несколько человек выполняют поддержку заплаты kgdb для различных аппаратных платформ и версий ядра. Поиск в Интернет — наилучший способ найти необходимую заплату для заданного ядра.
Отладчик kdb