Зневаджувач

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Знева́джувач (також — знева́дник, налаго́джувач, відналагоджувач, зустр. англіцизм: деба́ґґер) англ. debugger — комп'ютерна програма, яка використовується для тестування і зневадження інших програм. Як варіант, код для розгляду може бути запущено на емуляторі інструкцій, що дозволяє більший контроль зупинки процесу при заданих умовах, але, як правило, тоді виконання коду відбувається набагато повільніше, ніж якщо це робиться напряму на процесорі.

Опис[ред.ред. код]

Якщо програма завершується аварійно, буде показано позицію у сирцевому коді, якщо це зневаджувач рівня сирцевих кодів або зневаджувач символьний, що як правило присутні в інтегрованих середовищах розробки. Зневаджувачі таких типів показують рядок у дизасемблері. («Аварійне завершення» відбувається, коли програма не може продовжуватися через помилку. Наприклад, програма намагається використати інструкцію, відсутню на поточній версії центрального процесора або при спробі доступу до відсутньої або захищеної пам'яті.

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

Важливість гарного зневаджувача важко перевищити. Більш того, наявність та якість такого інструменту для конкретної мови та платформи можуть бути вирішальним фактором у їх використанні, навіть якщо інша мова або платформа краще підходять для виконання завдання. Разом з тим, важливо також зазначити, що програмне забезпечення може поводитися (і часто поводиться) інакше під керуванням зневаджувача, ніж при прямому виконанні, через неминучі зміни в оточенні, що вносяться зневаджувачем. В результаті, навіть при потужному інструменті зневадження, часто дуже важко відслідковувати виконання завдань у складних багатопотокових або розподілених системах.

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

Більшість основних рушіїв зневадження, таких як GDB і DBX надають інтерфейс командного рядка. Графічні оболонки зневаджувачів є популярними розширеннями для рушіїв зневадження, які забезпечують інтегрування в інтегроване середовище розробки, анімацію та візуалізацію функцій.

Апаратна підтримка для зневадження[ред.ред. код]

Більшість сучасних мікропроцесорів мають принаймні одну з цих функцій полегшення зневаджування у своїй архітектурі:

  • апаратна підтримка покрокового виконання програми, наприклад, прапорець пастки
  • набір інструкцій, що відповідає вимогам до віртуалізації від Popek та Goldberg, що дозволяє простіше побудувати зневаджувач програмного забезпечення, яке працює на тому ж процесорі, що й програма зневадження; такі процесори можуть виконувати внутрішні цикли програми на повній швидкості, але залишаються під контролем зневаджувача
  • внутрішньосистемне програмування дозволяє зневаджувачу виконати програму заново на зовнішніх апаратних засобах задля її тестування (наприклад, для додавання або вилучення точок зупину на інструкціях)
  • апаратне забезпечення точок зупину при зміні даних, наприклад, виключна ситуація при відсутності сторінки
  • контакти JTAG або новіші інтерфейси зневадження Nexus та ETM (Embedded Trace Macrocell від ARM)

Список зневаджувачів[ред.ред. код]

Winpdb що проводить зневадження себе

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

Див. також[ред.ред. код]

Джерела[ред.ред. код]

Посилання[ред.ред. код]