Налагоджувач


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




Зміст





  • 1 Опис


  • 2 Апаратна підтримка для відлагодження


  • 3 Список відлагоджувачів


  • 4 Див. також


  • 5 Джерела


  • 6 Посилання


  • 7 Примітки




Опис |


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


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


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


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


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



Апаратна підтримка для відлагодження |


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


  • апаратна підтримка покрокового виконання програми, наприклад, прапорець пастки

  • набір інструкцій, що відповідає вимогам до віртуалізації від Popek та Goldberg, що дозволяє простіше побудувати відлагоджувач програмного забезпечення, яке працює на тому ж процесорі, що й програма зневадження; такі процесори можуть виконувати внутрішні цикли програми на повній швидкості, але залишаються під контролем відлагоджувача


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

  • апаратне забезпечення точок зупину при зміні даних, наприклад, виключна ситуація при відсутності сторінки

  • контакти JTAG або новіші інтерфейси зневадження Nexus та ETM (Embedded Trace Macrocell від ARM)


Список відлагоджувачів |





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


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



  • AppPuncher Debugger (для зневадження Rich Internet Applications)


  • CA/EZTEST (Cics Interactive test/debug)

  • CodeView


  • DBG — відлагоджувач і профайлер PHP

  • dbx


  • DDD (Data Display Debugger)


  • DEBUG — вбудований відлагоджувач для DOS та Microsoft Windows


  • Distributed Debugging Tool (Allinea DDT)


  • DDTLite Allinea DDTLite для Visual Studio 2008


  • Dynamic debugging technique (DDT), та його вісімковий аналог Octal Debugging Technique

  • Eclipse

  • TotalView


  • GNU Debugger (GDB)

  • Parasoft Insure++

  • Insight


  • Interactive Disassembler (IDA Pro)

  • Java Platform Debugger Architecture


  • JSwat — відлагоджувач для Java з відкритими вихідними кодами


  • Nemiver — графічний відлагоджувач C/C++ для Графічного середовища GNOME

  • MacsBug

  • OLIVER (CICS interactive test/debug)

  • OllyDbg

  • IBM Rational Purify

  • sdb


  • SIMMON (Simulation Monitor)

  • SIMON (Batch Interactive test/debug)

  • SoftICE

  • Turbo Debugger


  • Ups — відлагоджувач рівня вихідних кодів для C та Fortran

  • WinDbg

  • Zeta Debugger

  • Valgrind


  • VB Watch Debugger — відлагоджувач для Visual Basic 6.0

  • Microsoft Visual Studio Debugger


  • Xdebug — зневадження і профілювання PHP


Див. також |


  • Відлагоджування

  • Профілювання (комп'ютерні науки)

  • Тестування програмного забезпечення


Джерела |


  • Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7


Посилання |



  • Learn the essentials of debugging How to improve your debugging skills, a good article at IBM developerWorks.

  • OpenRCE: Various Debugger Resources and Plug-ins


Примітки |




  1. Є. Мейнарович, М. Кратко, «Англійсько-український словник з математики та інформатики», 2010р







Popular posts from this blog

Save data to MySQL database using ExtJS and PHP [closed]2019 Community Moderator ElectionHow can I prevent SQL injection in PHP?Which MySQL data type to use for storing boolean valuesPHP: Delete an element from an arrayHow do I connect to a MySQL Database in Python?Should I use the datetime or timestamp data type in MySQL?How to get a list of MySQL user accountsHow Do You Parse and Process HTML/XML in PHP?Reference — What does this symbol mean in PHP?How does PHP 'foreach' actually work?Why shouldn't I use mysql_* functions in PHP?

Compiling GNU Global with universal-ctags support Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Tags for Emacs: Relationship between etags, ebrowse, cscope, GNU Global and exuberant ctagsVim and Ctags tips and trickscscope or ctags why choose one over the other?scons and ctagsctags cannot open option file “.ctags”Adding tag scopes in universal-ctagsShould I use Universal-ctags?Universal ctags on WindowsHow do I install GNU Global with universal ctags support using Homebrew?Universal ctags with emacsHow to highlight ctags generated by Universal Ctags in Vim?

Add ONERROR event to image from jsp tldHow to add an image to a JPanel?Saving image from PHP URLHTML img scalingCheck if an image is loaded (no errors) with jQueryHow to force an <img> to take up width, even if the image is not loadedHow do I populate hidden form field with a value set in Spring ControllerStyling Raw elements Generated from JSP tagds with Jquery MobileLimit resizing of images with explicitly set width and height attributeserror TLD use in a jsp fileJsp tld files cannot be resolved