З чого необхідно почати

Отже, чи готові ви почати полювання за помилками Цей шлях може виявитися довгим і повним розчарувань Деякі помилки ставили в тупик все співтовариство розробників ядра на кілька місяців На щастя, на кожну з таких злісних помилок знаходяться прості, які легко виправити Якщо вам пощастить, то всі проблеми, з якими ви зіткнетеся, будуть простими і тривіальними Однак щоб це перевірити, необхідно почати дослідження Для цього знадобиться наступне

• Сама проблема Може звучати нерозумно, але дефект повинен бути конкретним і добре визначеним Дуже допомагає, якщо його хоча б хто-небудь може стійко відтворити Однак, на жаль, дефекти зазвичай ведуть себе не так добре, як хотілося б, і не завжди можуть бути добре визначені

• Версія ядра, в якій існує дефект (зазвичай це остання версія, хоча хто може це гарантувати) Ще краще, якщо відома версія ядра, в якій проблема вперше зявилася Ми розглянемо, як це встановити, якщо немає такої інформації

• Трохи удачі, досвіду та їх комбінації

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

справі так трапляється досить часто (наприклад, з розробниками ядра), але очевидно, що шанси домогтися успіху стають більш вагомими, якщо зявляється можливість відтворити проблему

Може також здатися дивним, що існують дефекти, які хтось не може відтворити Справа в тому, що в призначених для користувача програмах дефекти найчастіше виявляються дуже просто, наприклад виклик функції foo призводить до створення файлу core У ядрі все зовсім по-друт Взаємодії між ядром, простором користувача і апаратурою можуть бути досить тонкими Стани конкуренції за ресурси можуть виникати з імовірністю одне на мільйон ітерацій алгоритму Погано спроектований або навіть не правильно скомпільований код може забезпечувати задовільну продуктивність на одній системі, але незадовільну на інший, Дуже часто відбувається так, що на якійсь випадковій машині, при дуже специфічному характері завантаженні, починають проявлятися дефекти, які більше ніде не проявляються Чим більше доступно додаткової інформації при локалізації дефекту, тим краще У багатьох випадках, як тільки вдалося стійко відтворити проблему, можна вважати, що більша половина роботи зроблена

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

*

*