Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 4.1. Поддержка отладки в ядре

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Поддержка отладки в ядре

hardorsoft 19.11.10 в 11:39

0

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

hardorsoft 19.11.10 в 11:40

0

Здесь перечислены параметры конфигурации, которые должны быть включены для ядер, использующихся для разработки. Если не указано другое, все эти параметры находятся в меню “kernel hacking” ("взламывание ядра") любой утилиты конфигурации ядра. Заметим, что некоторые из этих параметров не поддерживаются всеми архитектурами.

hardorsoft 19.11.10 в 11:40

0

CONFIG_DEBUG_KERNEL

hardorsoft 29.10.10 в 23:10

0

Этот параметр просто доступными делает другие опции отладки; он должен быть включен, но сам по себе не включает какие-то возможности.

hardorsoft 19.11.10 в 11:40

0

CONFIG_DEBUG_SLAB

hardorsoft 29.10.10 в 23:10

0

Этот важнейший параметр включает несколько видов проверок в функциях выделения памяти ядра; при включении этих проверок можно обнаружить ошибки переполнения памяти и отсутствие инициализации. Каждый байт выделенной памяти устанавливается в 0xa5 перед передачей вызывающему и устанавливается в 0x6b, когда освобождается. Если вы когда-либо увидите эти повторяющиеся "ядовитые" шаблоны при выводе из вашего драйвера (или часто в распечатках Oops), вы будете точно знать, какую ошибку искать. При включенной отладке ядро также размещает особые защитные значения до и после каждой выделенной объекту памяти; если эти значения оказываются изменёнными, ядро знает, что кто-то вызвал переполнение памяти, и оно громко выражает недовольство. Так же включаются различные проверки на более малоизвестные ошибки.

hardorsoft 19.11.10 в 11:40

0

CONFIG_DEBUG_PAGEALLOC

hardorsoft 29.10.10 в 23:10

0

Полные страницы при освобождении удаляются из адресного пространства ядра. Эта опция может значительно замедлить ход событий, но она может также быстро указать на некоторые виды ошибок повреждения памяти.

hardorsoft 19.11.10 в 11:40

0

CONFIG_DEBUG_SPINLOCK

hardorsoft 29.10.10 в 23:11

0

Когда эта опция включена, ядро улавливает операции на неинициализированных спин-блокировках и другие различные ошибки (такие, как двойная разблокировка).
CONFIG_DEBUG_SPINLOCK_SLEEP

hardorsoft 19.11.10 в 11:40

0

Эта опция позволяет проверить наличие попытки заснуть в момент удержания спин-блокировки. На самом деле, оно жалуется, если вы вызываете функцию, которая может потенциально заснуть, даже если вызов в запросе не будет спать.

hardorsoft 19.11.10 в 11:41

0

CONFIG_INIT_DEBUG

hardorsoft 29.10.10 в 23:11

0

Отмеченное __init (или __initdata) удаляется после инициализации системы или загрузки модуля. Эта опция позволяет проверить код, который пытается получить доступ к памяти, используемой во время инициализации, после завершения инициализации.

hardorsoft 19.11.10 в 11:41

0

CONFIG_DEBUG_INFO

hardorsoft 29.10.10 в 23:11

0

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

hardorsoft 19.11.10 в 11:41

0

CONFIG_MAGIC_SYSRQ

hardorsoft 29.10.10 в 23:11

0

Разрешает кнопку “системный SysRq” (“magic SysRq”). Мы рассмотрим эту кнопку позже в этой главе в разделе "Зависания системы".

hardorsoft 19.11.10 в 11:41

0

CONFIG_DEBUG_STACKOVERFLOW
CONFIG_DEBUG_STACK_USAGE

hardorsoft 29.10.10 в 23:11

0

Эти опции могут помочь отследить переполнение стека ядра. Явным признаком переполнения стека является листинг Oops без какого-либо признака разумной обратной трассировки. Первая опция добавляет явные проверки переполнения в ядре; вторая заставляет ядро контролировать использование стека и делать доступной некоторую статистику, доступную через системную кнопку SysRq.

hardorsoft 19.11.10 в 11:42

0

CONFIG_KALLSYMS

hardorsoft 29.10.10 в 23:11

0

Этот параметр (в настройках “General setup/Standard features”, "Общая настройка/Стандартные возможности") заставляет информацию символов ядра быть встроенной в ядро; он включен по умолчанию. Информация о символах используется в контекстах отладки; без неё листинг Oops может дать вам обратную трассировку ядра только в шестнадцатеричном виде, что не очень полезно.

hardorsoft 19.11.10 в 11:42

0

CONFIG_IKCONFIG
CONFIG_IKCONFIG_PROC

hardorsoft 29.10.10 в 23:11

0

Эти параметры (находятся в меню  “General setup”, "Общая настройка") заставляют быть встроенным в ядро полное состояние конфигурации ядра и делают его доступным через /proc. Большинство разработчиков ядра знают, какие конфигурации они использовали, и не нуждаются в этих опциях (которые делают ядро больше). Хотя они могут быть полезны, если вы пытаетесь найти проблему в ядре, собранном кем-то другим.

hardorsoft 19.11.10 в 11:42

0

CONFIG_ACPI_DEBUG

hardorsoft 29.10.10 в 23:12

0

Находится в “Power management/ACPI” ("Управление питанием/ACPI"). Эта опция включает подробную отладочную информацию ACPI (Advanced Configuration and Power Interface), которая может быть полезна, если вы подозреваете, что проблема связана с ACPI.

hardorsoft 19.11.10 в 11:42

0

CONFIG_DEBUG_DRIVER

hardorsoft 29.10.10 в 23:12

0

Находится в “Device drivers” ("Драйверы устройств"). Включает отладочную информацию в драйверном ядре, которая может быть полезной для отслеживания проблем в низкоуровневом коде поддержки. Мы рассмотрим драйверное ядро в Главе 14.

hardorsoft 19.11.10 в 11:42

0

CONFIG_SCSI_CONSTANTS

hardorsoft 29.10.10 в 23:12

0

Это параметр, находящийся в “Device drivers/SCSI device support”  ("Драйверы устройств/поддержка SCSI устройств"), встраивается в информацию для подробных сообщений об ошибках SCSI. Если вы работаете над драйвером SCSI, вы, вероятно, захотите включить эту опцию.

hardorsoft 19.11.10 в 11:43

0

CONFIG_INPUT_EVBUG

hardorsoft 29.10.10 в 23:12

0

Эта опция (в разделе “Device drivers/Input device support”, "Драйверы устройств/Поддержка устройств ввода") включает подробное логирование входных событий. Если вы работаете над драйвером для устройства ввода, эта опция может быть полезной. Однако, будьте осведомлены о последствиях для безопасности: логируется всё, что вводится, включая ваши пароли.

hardorsoft 19.11.10 в 11:43

0

CONFIG_PROFILING

hardorsoft 29.10.10 в 23:12

0

Эта опция находится в разделе “Profiling support” ("Поддержка профилирования"). Профилирование обычно используется для настройки производительности системы, но оно также может быть полезно для отслеживания некоторых зависаний ядра и связанных с ними проблем.

hardorsoft 19.11.10 в 11:43

0

Эта опция находится в разделе “Profiling support” ("Поддержка профилирования"). Профилирование обычно используется для настройки производительности системы, но оно также может быть полезно для отслеживания некоторых зависаний ядра и связанных с ними проблем.

hardorsoft 19.11.10 в 11:43

0

Мы вернёмся к некоторым из вышеуказанных опций при рассмотрении различных способов отслеживания проблем с ядром. Но сначала мы рассмотрим классическую технику отладки: печать отчётов.

hardorsoft 19.11.10 в 11:43

0
Минутку...