Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 4.1. Поддержка отладки в ядре
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Поддержка отладки в ядре hardorsoft 19.11.10 в 11:39 |
|
|
В Главе 2 мы рекомендовали вам собрать и установить собственное ядро, а не запускать поставляемое ядро, которое пришло с вашего дистрибутива. Одной из главных причин для запуска собственного ядра является то, что разработчики ядра встроили некоторые возможности отладки в само ядро. Эти функции могут создать дополнительный вывод и уменьшить производительность, поэтому они чаще всего не включены в ядрах, собранных дистрибьюторами. Как разработчик ядра, однако, вы имеете другие приоритеты и с радостью примете (минимальные) накладные расходы дополнительной поддержки отладки в ядре. hardorsoft 19.11.10 в 11:40 |
||
|
Здесь перечислены параметры конфигурации, которые должны быть включены для ядер, использующихся для разработки. Если не указано другое, все эти параметры находятся в меню “kernel hacking” ("взламывание ядра") любой утилиты конфигурации ядра. Заметим, что некоторые из этих параметров не поддерживаются всеми архитектурами. hardorsoft 19.11.10 в 11:40 |
||
|
CONFIG_DEBUG_KERNEL hardorsoft 29.10.10 в 23:10 |
||
|
Этот параметр просто доступными делает другие опции отладки; он должен быть включен, но сам по себе не включает какие-то возможности. hardorsoft 19.11.10 в 11:40 |
||
|
CONFIG_DEBUG_SLAB hardorsoft 29.10.10 в 23:10 |
||
|
Этот важнейший параметр включает несколько видов проверок в функциях выделения памяти ядра; при включении этих проверок можно обнаружить ошибки переполнения памяти и отсутствие инициализации. Каждый байт выделенной памяти устанавливается в 0xa5 перед передачей вызывающему и устанавливается в 0x6b, когда освобождается. Если вы когда-либо увидите эти повторяющиеся "ядовитые" шаблоны при выводе из вашего драйвера (или часто в распечатках Oops), вы будете точно знать, какую ошибку искать. При включенной отладке ядро также размещает особые защитные значения до и после каждой выделенной объекту памяти; если эти значения оказываются изменёнными, ядро знает, что кто-то вызвал переполнение памяти, и оно громко выражает недовольство. Так же включаются различные проверки на более малоизвестные ошибки. hardorsoft 19.11.10 в 11:40 |
||
|
CONFIG_DEBUG_PAGEALLOC hardorsoft 29.10.10 в 23:10 |
||
|
Полные страницы при освобождении удаляются из адресного пространства ядра. Эта опция может значительно замедлить ход событий, но она может также быстро указать на некоторые виды ошибок повреждения памяти. hardorsoft 19.11.10 в 11:40 |
||
|
CONFIG_DEBUG_SPINLOCK hardorsoft 29.10.10 в 23:11 |
||
|
Когда эта опция включена, ядро улавливает операции на неинициализированных спин-блокировках и другие различные ошибки (такие, как двойная разблокировка). hardorsoft 19.11.10 в 11:40 |
||
|
Эта опция позволяет проверить наличие попытки заснуть в момент удержания спин-блокировки. На самом деле, оно жалуется, если вы вызываете функцию, которая может потенциально заснуть, даже если вызов в запросе не будет спать. hardorsoft 19.11.10 в 11:41 |
||
|
CONFIG_INIT_DEBUG hardorsoft 29.10.10 в 23:11 |
||
|
Отмеченное __init (или __initdata) удаляется после инициализации системы или загрузки модуля. Эта опция позволяет проверить код, который пытается получить доступ к памяти, используемой во время инициализации, после завершения инициализации. hardorsoft 19.11.10 в 11:41 |
||
|
CONFIG_DEBUG_INFO hardorsoft 29.10.10 в 23:11 |
||
|
Эта опция заставляет ядро быть собранным с подключенной полной отладочной информацией. Вам необходима эта информация, если вы хотите отлаживать ядро с gdb. Вы также можете захотеть включить CONFIG_FRAME_POINTER, если планируете использовать gdb. hardorsoft 19.11.10 в 11:41 |
||
|
CONFIG_MAGIC_SYSRQ hardorsoft 29.10.10 в 23:11 |
||
|
Разрешает кнопку “системный SysRq” (“magic SysRq”). Мы рассмотрим эту кнопку позже в этой главе в разделе "Зависания системы". hardorsoft 19.11.10 в 11:41 |
||
|
CONFIG_DEBUG_STACKOVERFLOW hardorsoft 29.10.10 в 23:11 |
||
|
Эти опции могут помочь отследить переполнение стека ядра. Явным признаком переполнения стека является листинг Oops без какого-либо признака разумной обратной трассировки. Первая опция добавляет явные проверки переполнения в ядре; вторая заставляет ядро контролировать использование стека и делать доступной некоторую статистику, доступную через системную кнопку SysRq. hardorsoft 19.11.10 в 11:42 |
||
|
CONFIG_KALLSYMS hardorsoft 29.10.10 в 23:11 |
||
|
Этот параметр (в настройках “General setup/Standard features”, "Общая настройка/Стандартные возможности") заставляет информацию символов ядра быть встроенной в ядро; он включен по умолчанию. Информация о символах используется в контекстах отладки; без неё листинг Oops может дать вам обратную трассировку ядра только в шестнадцатеричном виде, что не очень полезно. hardorsoft 19.11.10 в 11:42 |
||
|
CONFIG_IKCONFIG hardorsoft 29.10.10 в 23:11 |
||
|
Эти параметры (находятся в меню “General setup”, "Общая настройка") заставляют быть встроенным в ядро полное состояние конфигурации ядра и делают его доступным через /proc. Большинство разработчиков ядра знают, какие конфигурации они использовали, и не нуждаются в этих опциях (которые делают ядро больше). Хотя они могут быть полезны, если вы пытаетесь найти проблему в ядре, собранном кем-то другим. hardorsoft 19.11.10 в 11:42 |
||
|
CONFIG_ACPI_DEBUG hardorsoft 29.10.10 в 23:12 |
||
|
Находится в “Power management/ACPI” ("Управление питанием/ACPI"). Эта опция включает подробную отладочную информацию ACPI (Advanced Configuration and Power Interface), которая может быть полезна, если вы подозреваете, что проблема связана с ACPI. hardorsoft 19.11.10 в 11:42 |
||
|
CONFIG_DEBUG_DRIVER hardorsoft 29.10.10 в 23:12 |
||
|
Находится в “Device drivers” ("Драйверы устройств"). Включает отладочную информацию в драйверном ядре, которая может быть полезной для отслеживания проблем в низкоуровневом коде поддержки. Мы рассмотрим драйверное ядро в Главе 14. hardorsoft 19.11.10 в 11:42 |
||
|
CONFIG_SCSI_CONSTANTS hardorsoft 29.10.10 в 23:12 |
||
|
Это параметр, находящийся в “Device drivers/SCSI device support” ("Драйверы устройств/поддержка SCSI устройств"), встраивается в информацию для подробных сообщений об ошибках SCSI. Если вы работаете над драйвером SCSI, вы, вероятно, захотите включить эту опцию. hardorsoft 19.11.10 в 11:43 |
||
|
CONFIG_INPUT_EVBUG hardorsoft 29.10.10 в 23:12 |
||
|
Эта опция (в разделе “Device drivers/Input device support”, "Драйверы устройств/Поддержка устройств ввода") включает подробное логирование входных событий. Если вы работаете над драйвером для устройства ввода, эта опция может быть полезной. Однако, будьте осведомлены о последствиях для безопасности: логируется всё, что вводится, включая ваши пароли. hardorsoft 19.11.10 в 11:43 |
||
|
CONFIG_PROFILING hardorsoft 29.10.10 в 23:12 |
||
|
Эта опция находится в разделе “Profiling support” ("Поддержка профилирования"). Профилирование обычно используется для настройки производительности системы, но оно также может быть полезно для отслеживания некоторых зависаний ядра и связанных с ними проблем. hardorsoft 19.11.10 в 11:43 Эта опция находится в разделе “Profiling support” ("Поддержка профилирования"). Профилирование обычно используется для настройки производительности системы, но оно также может быть полезно для отслеживания некоторых зависаний ядра и связанных с ними проблем. hardorsoft 19.11.10 в 11:43 |
||
|
Мы вернёмся к некоторым из вышеуказанных опций при рассмотрении различных способов отслеживания проблем с ядром. Но сначала мы рассмотрим классическую технику отладки: печать отчётов. hardorsoft 19.11.10 в 11:43 |
