Використання відладчика gdb

Для того, щоб мигцем заглянути всередину працюючого ядра можна використовувати стандартний відладчик GNU Запуск відладчика для роботи з ядром майже ні чим не відрізняється від налагодження виконувалося процесу

gdb vmlinux /proc/kcore

Файл vmlinu x – це декомпрессірованний виконуваний образ ядра, який зберігається в корені каталогу вихідних кодів, де виконувалася збірка виконується ядра Стислі файли zlmage, або bzlmage використовувати не можна

Опціональний параметр / proc / kcor e виконує роль файлу core, щоб дозволити отладчику читати з памяті виконується ядра Щоб мати можливість читати цей файл, необхідно мати права користувача root

Можна користуватися практично всіма командами програми gdb для читання інформації Наприклад, щоб надрукувати значення змінної можна восполбзо тися командою

р global_variable

Для того, щоб аналізувати код код функції можна виконати наступну команду

disassemble function

Якщо ядро ​​було скомпільовано із зазначенням прапора-g (необхідно додати-g до значення змінної CFLAGS у файлі Makefil e ядра), то відладчик gdb зможе видавати більше інформації Наприклад, можна виводити дампи структур даних і разименовивать покажчики При цьому також виходить ядро ​​значно більшого розміру, тому для звичайної роботи не слід компілювати ядро ​​налагоджування

На жаль, на цьому закінчуються можливості використання відладчика gdb З його допомогою ніяк не можна змінювати дані ядра Немає можливості покроково виконувати код ядра, або встановлювати точки зупинки (Breakpoint) Неможливість змінювати структури даних ядра – це великий недолік Хоча дуже корисно

мати можливість аналізувати код код функцій, ще більш корисною була б можливість змінювати структури даних

Отладчик kgdb

Отладчик kgdb-це латка ядра, яка дозволяє за допомогою відладчика gdb налагоджувати ядро ​​по лінії послідовної передачі Для цього потрібно два компютера На перпен виконується ядро ​​з латкою kgdb Другий компютер використовується для налагодження ядра по лінії послідовної передачі (нуль-модемний кабель, що зєднує дві машини) за допомогою gdb Завдяки отладчику kgdb повністю доступний весь набір функцій gdb: читання і запис будь-яких змінних, установка точок зупинки, установка точок стеження (watch points), покрокове виконання і ін Спеціальні версії kgdb навіть дозволяють викликати функції

Установка kgdb та лінії послідовної передачі дещо складна процедура, але якщо її виконати, то налагодження ядра значно спрощується Латка ядра також встановлює велику кількість документації в каталог Documentation /, її слід прочитати

Кілька людей виконують підтримку латки kgdb для різних апаратних платформ і версій ядра Пошук в Інтернет – найкращий спосіб знайти необхідну латку для заданого ядра

Отладчик kdb

Альтернативою kgdb є відладчик kdb На відміну від kgdb відладчик kdb – не видалених відладчик Отладчик kdb – це латка, яка сильно модифікує ядро ​​і дозволяє виконувати налагодження прямо на тій же машині, де виконується ядро Крім усього іншого підтримується можливість зміни змінних, установки точок зупинки і покрокове виконання Виконувати налагодження просто – необхідно натиснути на консолі клавішу break При виведенні повідомлення oops перехід в відладчик виконується автоматично Більш детальна документація доступна в каталозі Documentation / kd b після застосування латки Латка kdb доступна в Інтернет за адресою http://osssgicom/

Джерело: Лав, Роберт Розробка ядра 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>

*

*