Конфігураційні параметри налагодження ядра

Існує кілька конфігураційних параметрів, які допомагають у налагодженні і тестуванні коду ядра і які включаються під премія компіляції Ці параметри доступні в пункті Kernel hacking меню редактора конфігурації ядра Всі ці параметри залежать від параметра CONFIG_DEBUG_KERNEL Для розробки коду ядра слід включати тільки ті параметри, які необхідні

Деякі з цих параметрів досить корисні, такі як налагодження роботи зі слябової розподільником памяті (slab layer debugging), налагодження роботи з верхньої памяттю (high memory debugging), налагодження роботи з відображуваним на память введенням-висновком (I / O mapping debugging), налагодження роботи зі спін-блокуваннями (spinlock debugging) і перевірка переповнення стека (stack overflow checking) Однак, один з найкорисніших параметрів – це перевірка переходу в стан очікування при захопленої спін-блокуванні (sleep-inside-spinlock checking),яка насправді виконує значно більше роботи

Отладкаатомарнихоперацій

Починаючи з серії 25 в ядрі зявилася відмінна інфраструктура для визначення всіх типів порушення атомарности Згадайте з глави 8, Введення в синхронізацію виконання коду ядра, що атомарность означає неподільне виконання, тобто код виконується без перерви до завершення, або не закінчується взагалі Код, який утримує спін-блокування, або виконується при забороненої преемптівності ядра, є атомарним Під час атомарного виконання не можна переходити в стан очікування Очікування при утримуваної спін-блокуванні – один з варіантів взаимоблокировки

Завдяки властивостям преемптівності, ядро ​​має глобальний лічильник преемптівності Ядро може бути налаштоване так, що, якщо виконується перехід в стан очікування, або навіть виконується код, який потенційно може переходити в стан очікування при виконанні атомарної операції, то ядро ​​виводить попереджувальне повідомлення і зворотну трасування Потенційні помилки, які детектируются таким чином, включають виклик функції schedul e () при утримуваної блокуванні, виконання блокуючого виділення памяті при утримуваної блокуванні, або перехід в стан очікування при утримуваної посиланням на дані, повязані з процесором Ця отладочная інфраструктура може виявити дуже багато помилок і її дуже рекомендується використовувати

Наступні конфігураційні параметри дозволяють повністю використовувати цю можливість

CONFIG_PREEMPT=y CONFIG_DEBUG_KERNEL=y CONFIG_KALLSYMS=y CONFIG_SPINLOCK_SLEEP=y

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*