Генерація помилок і видача інформації

Існує кілька підпрограм ядра, які дозволяють легко сигналізувати про наявність дефектів коду, забезпечувати оголошення про помилки і виводити необхідну інформацію Дві найбільш часто використовувані – Це BUG () і BUG_ON () При виклику ці функції створюють ситуацію oops, яка проявляється у виведенні зворотного трасування стека ядра та повідомлення про помилку Яким чином ці виклики генерують ситуацію oops залежить від апаратної платформи Для більшості апаратних платформ виклики BUG () і BUG_ON () визначаються як деяка неприпустима машинна команда, яка приводить до висновку бажаного повідомлення oops

Зазвичай ці виклики використовуються як оголошення про наявність помилки

(Assertion), щоб сигналізувати про ситуацію, яка не повинна статися

if (bad_thing) BUG()

Або навіть так

BUG_ON(bad_thing)

Про більш критичною помилку можна сигналізувати за допомогою функції pani c () Функція pani c () друкує повідомлення про помилку і зупиняє ядро Ясно, що цю функцію слід використовувати тільки в самої поганої ситуації

if (terrible_thing)

panic(&quotfoo is %ld\n&quot, foo)

Іноді необхідно просто вивести на консоль трасування стека, щоб полегшити налагодження У цих випадках використовується функція dump_stack () Ця функція відображає на консоль вміст регістрів процесора і зворотну трасування викликів функцій

if (debug_check) {

printk (KERN_DEBUG видати деяку інформацію .. \ n)

dump_stack()

}

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

*

*