Нала́годження програ́ми , в мережі рідше знева́дження (англ. debugging) — методичний процес пошуку та зменшення числа помилок або дефектів у комп'ютерній програмі або електронному обладнанні з метою отримання очікуваної поведінки. Зневадження, як правило, ускладнюється, коли різні підсистеми міцно пов'язані між собою, оскільки зміни в одній частині можуть викликати помилки в іншій.
Термінологія
Існують різні варіанти тлумачення походження терміна англ. debugging. Серед програмістів популярна легенда, що терміни «bug» та «debugging» першою вжила Ґрейс Гоппер у 1940-х роках. Коли вона працювала на комп'ютері Mark II в Гарвардському університеті, її співробітники виявили, що міль застрягла в реле і тим самим призвела до збою в роботі комп'ютера. Грейс підклеїла в щоденник міль і написала, що це перший випадок в історії, коли жучка (англ. bug — жучок, комаха) виявили насправді (actual case). Сам запис свідчить про те, що слово баг у значенні помилки в програмі було вже відоме їй. Термін «bug» в сенсі технічної помилки вживався, принаймні ще в 1878 Томасом Едісоном, і «debugging», судячи з усього, використовувався як термін в аеронавтиці перед появою комп'ютерів. В Оксфордському словнику слово «debugging» з'явилося ще за два роки, до випадку з комахою. Слова bug і debugging у вузькому значенні помилки в програмі та процесу її виправлення утвердилися впродовж 50-х років, і на початку 60-х його вживання в літературі не потребувало додаткового пояснення.
Більшість перекладних і тлумачних словників ще з радянських часів як відповідник до «debugging» вказують «налагоджування». Термін «зневадження» був запропонований О. Кочергою та Є. Мейнаровичем на початку 2000-х, імовірно, щоб уникнути неоднозначності [] з поняттям загального налагоджування програми.
Вади
Пошук і виправлення помилок, які програмісти називають багами, — трудомісткий процес. Програмістський напівжарт визначає цикл життя програми, як 1:3:1 (написання:налагодження:використання). Вади трапляються переважно через неуважність або втому програміста, але інколи через непродуманий до кінця алгоритм. Кількість багів зростає зі зростанням розміру програми, а з її ускладненням виникають нові помилки, пов'язані зі взаємодією та взаємовпливом різних модулів.
Частина багів виправляється уже на етапі написання програми. Інша частина — після незалежного тестування. Зазвичай тестування, яке проводить користувач, який не знає механізму роботи програми, дозволяє виловити нові помилки, які програмісти не помічають, бо мають схильність робити тільки «правильні дії». Ще одна частина багів проявляється уже в роботі програми і потребує пізнього латання, чому служать патчі і .
Засоби
Цей розділ не містить . (квітень 2013) |
Пошук помилки в програмі, як правило, — тривале і клопітке завдання. Найважливішим чинником успішності та швидкості цього процесу є, мабуть, досвід програміста, але труднощі зі зневадженням програмного забезпечення також залежать значною мірою від мови програмування. Чимало середовищ розробки програмного забезпечення мають серед своїх інструментів спеціальну програму зневаджувач. Зневаджувач є програмним інструментом, який дозволяє програмісту контролювати виконання програми, зупиняти його, знову запускати, встановлювати точки зупинки, змінювати значення змінних у пам'яті й навіть, у деяких випадках, надає можливість повернутися в минуле. Термін зневаджувач може також стосуватися програміста.
Мови програмування високого рівня, наприклад, Java, спрощують зневадження, оскільки мають спеціальні програмні засоби, як, наприклад, обробка виняткових ситуацій, що дозволяють швидше локалізувати помилку. У мов програмування нижчого рівня, таких як C або Асемблер, помилка в програмі часто може створити проблеми, що проявляються не зразу, такі, як , і їх набагато важче виявити, оскільки зовнішньо проблема може проявитися набагато пізніше і в несподіваній формі. В таких випадках, надзвичайно корисними є спеціальні програми на кшталт .
У деяких ситуаціях можуть бути дуже корисними програмні засоби загального призначення, що прив'язані до конкретної мови. Прикладом можуть бути інструменти статичного аналізу коду. Ці інструменти виконують пошук дуже конкретних відомих (поширених та рідкісних) проблем у тексті програми. Вони дозволяють знаходити помилки, які рідко фіксуються компілятором або транслятором, оскільки вони не синтаксичні, а семантичні. Наприклад, інструкція С
if (x = foo()) bar();
підозріла. Можливо, програміст помилково використав присвоювання замість порівняння. Однак, вона є цілком легальною в С, і компілятор її пропустить.
Деякі виробники таких інструментів стверджують, що їхні програми можуть виявити понад 300 різних потенційних проблем. Такі засоби можуть бути надзвичайно корисними при перевірці дуже великих обсягів сирцевого коду, коли дуже неефективно переглядати весь код чи відстежувати всі шляхи його виконання. Типовим прикладом виявленої проблеми може бути звернення до змінної до її ініціалізації. Іншим прикладом може бути суворіша перевірка типів, якщо мова такої не має. Таким чином, ці засоби є кращими для виявлення потенційних вад, на противагу фактичним вадам. Як наслідок, ці засоби мають високий рівень помилкового спрацьовування. Давня утиліта Unix lint є одним з найстаріших прикладів засобів такого типу.
Для налагодження електронних пристроїв (наприклад, ), а також програмного забезпечення низького рівня (BIOS, тощо) і вбудованих програм, застосовують такі інструменти, як осцилограф, , , POST-контролери, які часто використовується і в комбінації. Вони можуть виконувати багато типових дій звичайних зневаджувачів для програмного забезпечення .
Процес зневадження
Відтворення помилки
Часто перший крок зневадження полягає в тому, щоб спробувати відтворити проблему, тобто точно визначити ситуацію, коли програма працює неправильно. Випадок, коли програма працює неправильно завжди є відносно простим, але часто проблеми проявляються тільки при експлуатації, уже після того, як програма пройшла тестування, яке не може перевірити всі можливі ситуації. Відтворення проблеми може бути особливо нетривіальним завданням, наприклад, у випадку паралельних процесів або незвичайних помилок. Крім того, специфічне вживання програми користувачем, або незвичайне оточення може значно ускладнити відтворення проблеми.
Після того, як помилку відтворено, потрібно виділити ту частину програми, де виникає збій, щоб працювати тільки з нею. Часто достатньо обмежитися тільки кількома рядами коду. Таке спрощення можна зробити вручну, за допомогою підходу «розділяй і володарюй». Програміст пробує вилучити деякі частини програми і перевіряє чи проблема все ще існує. При роботі з програмами, що використовують графічному інтерфейсі користувача, програміст спрощуватиме вікно програми, прибираючи контрольні елементи й перевіряючи, чи помилка все ще залишається. Для автоматизації цього процесу може використовуватися зневадження дельтою.
Трасування
Цей розділ не містить . (квітень 2013) |
Після того, як випробування випадку спрощено достатньо, програміст може розпочати пошук та виправлення помилки. Це можна робити або вручну, або з використанням зневаджувача. Поширеним є вставляння в програму додаткових інструкції, що регулярно роздруковували б інформацію про хід виконання програми. Такий метод називається трасуванням. У простих випадках трасування — лише декілька інструкцій виводу, що показує значення змінних в певних точках виконання програми.
Наприклад,
#ifdef DEBUG printf ("Перед викликом foo x= %d\n", x); #endif x = foo(); #ifdef DEBUG printf ("Після виклику foo x= %d\n", x); #endif
Можна використати зневаджувач, який дає доступ до стану програми (значення змінних, стек викликів) і відстежити походження помилки. Якщо мова програмування використовує компілятор, то зазвичай у бінарному коді програми вже втрачено відповідність між інструкціями процесору та рядками тексту програми. Тому для зневаджувача програму потрібно відкомпілювати в спеціальному режимі, де така відповідність збережена. При цьому розмір бінарного файлу програми зростає, а її виконання сповільнюється. Після того як помилку знайдено й виправлено, відповідний файл потрібно відкомпілювати в звичайному режимі. Зазвичай, при розробці програмного забезпечення в інтегрованому середовищі режим зневадження використовується за умовчанням, а перед поставкою програмного забезпечення замовнику його відключають.
Post mortem
Цей розділ не містить . (квітень 2013) |
Іноді помилку можна знайти, аналізуючи процесу. Таке зневадження називають посмертним (post mortem). Деякі операційні системи створюють дамп (відбиток пам'яті процесу) при аварійному завершенні програми, програміст може утворити його вручну, за потреби, наприклад командою операційної системи Unix. Для зіставлення пам'яті зі змінними програми бажано мати таблицю символів. В роботі допомагають спеціальні програми — аналізатори дампу. Дебаґери на зразок gdb теж можуть зчитати і проаналізувати дамп.
Інші методи
Шукати помилку можна, спостерігаючи за процесом з іншого комп'ютера. Для запуску віддаленого зневадження зневаджувач підключається до віддаленої системи через мережу. Після того, як зв'язок встановлено, зневаджувач може контролювати виконання програми на віддаленій системі та отримувати інформацію про її стан.
Антизневадження
Антизневадження є «застосування в комп'ютерному коді одного або декількох методів, що перешкоджають спробам зворотної розробки та зневадження цільового процесу». Види підходів:
- На основі API: перевірка на наявність зневаджувачів, використовуючи інформацію про систему
- На основі обробки виняткових ситуацій: перевіряється, чи йде перехоплення виняткових ситуацій
- Блокування процесів і потоків: перевіряється, чи були маніпуляції з блокуванням процесу або потоків
- Зміна коду: перевіряється чи були зміни в коді внесені зневаджувачем для обробки програмних точок зупину
- На основі обладнання та регістрів: перевіряються апаратні точки зупину і регістри процесора
- Час і латентність: перевіряється час виконання інструкцій
Зневадження може бути перешкодою при використанні одного або кількох з вищезазначених методів. Є достатньо багато методів антизневадження для захисту програмного забезпечення від більшості загроз.
Примітки
- Короткий тлумачний словник з інформатики та інформаційних систем для економістів / Л. С. Козловська, Н. М. Поліщук, К.: КНЕУ, 2004, С. 21: налагоджування (рос. налаживание, англ. debugging) — процес виявлення та усунення помилок у комп'ютерних програмах або обладнанні;
- Англо-український тлумачний словник з обчислювальної техніки, інтернету і програмування. К., 2006, С. 146: debugging — 1. налагодження # пошук і виправлення помилок у розроблюваній програмі.
- Коллін С. М. Г. Англо-український словник комп'ютерних термінів / Перекл. В. Воробйов. — Х., 2002. — С. 19: adjust (регулювати, настроювати); adjustment (регулювання настроювання); С. 126. debug (налагоджувати, усувати неполадки) дієсл. тестування програми для виявлення і виправлення всіх неполадок і помилок… debugger (налагоджувач, програма налагодження) ім. програмне забезпечення, що дозволяє програмістові знаходити несправності та помилки в програмі…
- Короткий англо-український тлумачний словник з комп'ютерної техніки / Укл. Р. Сіренко та ін. — Львів: ЛНУ, 2005. — С. 22: debugging — налагодження, пошук та виправлення помилок у програмі для комп'ютера.
- Саврук М. П. Українсько-англійський науково-технічний словник: понад 120 000 слів та словосполучень / НАН України, Фізико-механічний ін-т ім. Г. В. Карпенка. — К. : Наукова думка, 2008. — (Словники України). — С. 460—461: налагоджування, налагодження — (регулювання) adjustment; мат. setting-up; автотр. (двигуна, карбюратора) tune-up, tunung-up; комп. debugging, checkout; ~ верстата setting-up of a machine-tool; ~ двигуна engine tune-up; ~ ЕОМ (computer) debugging; ~ програми (programme) checkout / debugging/; автономне ~ off-line debugging; дистанційне ~ remote debugging; експлуатаційне ~ field adjustment; комплексне ~ complex debugging; покрокове ~ single-step debugging; попереднє ~ комп. prestage. Налагоджувач — комп. (програма) debugger; діалоговий ~ console /interactive/ debugger; моделювальний ~ simulation debugger; символьний ~ symbolic debugger.
- Тлумачний словник сучасної української мови: Фахова лексика: Бл. 20000 сл. / Заг. ред. В. Калашника. — Х, 2009. — С. 222—223: налагоджувач. У системах програмування — програма, призначена для аналізу функціонування та для налагоджування іншої програми.
- Тлумачний словник з інформатики / Заг. ред. акад. Г. Г. Півняка. — Д.: Нац. гірн. ун-т, 2010. — С. 68: debugger (налагоджувач) (див. дебаггер); Debugging (налагодження). Процес знаходження і виправлення помилок у програмі. С. 310: дебаггер (debugger) (див. баг) син. — налагоджувач, програма налагодження, налагоджувальна програма… С. 441: налагодження (debugging) (див. дебаггер) Процес виконання програми з метою виявлення помилок.
- Англійсько-український словник: Математика та кібернетика / Є. Мейнарович, М. Кратко — К.: Перун, 2010. — 560 с.: debugging = [ˌdi:'bʌgɪŋ] знева́джування/знева́дження, усува́ння/усу́нення вад; налаго́джування/налаго́дження; вилуча́ння/ви́лучення вад.
У Вікіпедії цей менш поширений термін вживається за домовленістю дописувачів. - Grace Hopper [ 5 березня 2016 у Wayback Machine.] з FOLDOC
- Zeller, p. 123.
- . Архів оригіналу за 19 жовтня 2016. Процитовано 18 січня 2009.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - ((DOI | 10.1109/MSP.2007.71))
Література
- Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging, Morgan Kaufmann, 2005.
- Додаткові матеріали
- David J. Agans: Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems, AMACOM, 2002.
- Bill Blunden: Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code, APress, 2003.
- Ann R. Ford, Toby J. Teorey: Practical Debugging in C++, Prentice Hall, 2002.
- Thorsten Grötker, Ulrich Holtmann, Holger Keding, Markus Wloka, The Developer's Guide to Debugging, Springer, 2008.
- Robert C. Metzger: Debugging by Thinking: A Multidisciplinary Approach, Digital Press, 2003.
- Glenford J Myers: *The Art of Software Testing, John Wiley & Sons inc, 2004.
- John Robbins: Debugging Applications, Microsoft Press, 2000.
- Matthew A. Telles, Yuan Hsieh: The Science of Debugging, The Coriolis Group, 2001.
- Dmitry Vostokov: Memory Dump Analysis Anthology, Volume 1, OpenTask, 2008.
Посилання
- Debugging tools, каталог посилань Open Directory Project
- — велика збірка посилань на засоби та методи зневадження
- Crash dump analysis patterns — ґрунтовна стаття по аналізу та знаходження вад в аварійних дампах
- Debugging Tools for Windows
- GDB: The GNU Project Debugger
- DDD/DataDisplayDebugger
Див. також
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nala godzhennya progra mi v merezhi ridshe zneva dzhennya angl debugging metodichnij proces poshuku ta zmenshennya chisla pomilok abo defektiv u komp yuternij programi abo elektronnomu obladnanni z metoyu otrimannya ochikuvanoyi povedinki Znevadzhennya yak pravilo uskladnyuyetsya koli rizni pidsistemi micno pov yazani mizh soboyu oskilki zmini v odnij chastini mozhut viklikati pomilki v inshij TerminologiyaStorinka z shodennika Grejs Gopper Isnuyut rizni varianti tlumachennya pohodzhennya termina angl debugging Sered programistiv populyarna legenda sho termini bug ta debugging pershoyu vzhila Grejs Gopper u 1940 h rokah Koli vona pracyuvala na komp yuteri Mark II v Garvardskomu universiteti yiyi spivrobitniki viyavili sho mil zastryagla v rele i tim samim prizvela do zboyu v roboti komp yutera Grejs pidkleyila v shodennik mil i napisala sho ce pershij vipadok v istoriyi koli zhuchka angl bug zhuchok komaha viyavili naspravdi actual case Sam zapis svidchit pro te sho slovo bag u znachenni pomilki v programi bulo vzhe vidome yij Termin bug v sensi tehnichnoyi pomilki vzhivavsya prinajmni she v 1878 Tomasom Edisonom i debugging sudyachi z usogo vikoristovuvavsya yak termin v aeronavtici pered poyavoyu komp yuteriv V Oksfordskomu slovniku slovo debugging z yavilosya she za dva roki do vipadku z komahoyu Slova bug i debugging u vuzkomu znachenni pomilki v programi ta procesu yiyi vipravlennya utverdilisya vprodovzh 50 h rokiv i na pochatku 60 h jogo vzhivannya v literaturi ne potrebuvalo dodatkovogo poyasnennya Bilshist perekladnih i tlumachnih slovnikiv she z radyanskih chasiv yak vidpovidnik do debugging vkazuyut nalagodzhuvannya Termin znevadzhennya buv zaproponovanij O Kochergoyu ta Ye Mejnarovichem na pochatku 2000 h imovirno shob uniknuti neodnoznachnosti dzherelo z ponyattyam zagalnogo nalagodzhuvannya programi VadiPoshuk i vipravlennya pomilok yaki programisti nazivayut bagami trudomistkij proces Programistskij napivzhart viznachaye cikl zhittya programi yak 1 3 1 napisannya nalagodzhennya vikoristannya Vadi traplyayutsya perevazhno cherez neuvazhnist abo vtomu programista ale inkoli cherez neprodumanij do kincya algoritm Kilkist bagiv zrostaye zi zrostannyam rozmiru programi a z yiyi uskladnennyam vinikayut novi pomilki pov yazani zi vzayemodiyeyu ta vzayemovplivom riznih moduliv Chastina bagiv vipravlyayetsya uzhe na etapi napisannya programi Insha chastina pislya nezalezhnogo testuvannya Zazvichaj testuvannya yake provodit koristuvach yakij ne znaye mehanizmu roboti programi dozvolyaye viloviti novi pomilki yaki programisti ne pomichayut bo mayut shilnist robiti tilki pravilni diyi She odna chastina bagiv proyavlyayetsya uzhe v roboti programi i potrebuye piznogo latannya chomu sluzhat patchi i ZasobiCej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno kviten 2013 Poshuk pomilki v programi yak pravilo trivale i klopitke zavdannya Najvazhlivishim chinnikom uspishnosti ta shvidkosti cogo procesu ye mabut dosvid programista ale trudnoshi zi znevadzhennyam programnogo zabezpechennya takozh zalezhat znachnoyu miroyu vid movi programuvannya Chimalo seredovish rozrobki programnogo zabezpechennya mayut sered svoyih instrumentiv specialnu programu znevadzhuvach Znevadzhuvach ye programnim instrumentom yakij dozvolyaye programistu kontrolyuvati vikonannya programi zupinyati jogo znovu zapuskati vstanovlyuvati tochki zupinki zminyuvati znachennya zminnih u pam yati j navit u deyakih vipadkah nadaye mozhlivist povernutisya v minule Termin znevadzhuvach mozhe takozh stosuvatisya programista Movi programuvannya visokogo rivnya napriklad Java sproshuyut znevadzhennya oskilki mayut specialni programni zasobi yak napriklad obrobka vinyatkovih situacij sho dozvolyayut shvidshe lokalizuvati pomilku U mov programuvannya nizhchogo rivnya takih yak C abo Asembler pomilka v programi chasto mozhe stvoriti problemi sho proyavlyayutsya ne zrazu taki yak i yih nabagato vazhche viyaviti oskilki zovnishno problema mozhe proyavitisya nabagato piznishe i v nespodivanij formi V takih vipadkah nadzvichajno korisnimi ye specialni programi na kshtalt U deyakih situaciyah mozhut buti duzhe korisnimi programni zasobi zagalnogo priznachennya sho priv yazani do konkretnoyi movi Prikladom mozhut buti instrumenti statichnogo analizu kodu Ci instrumenti vikonuyut poshuk duzhe konkretnih vidomih poshirenih ta ridkisnih problem u teksti programi Voni dozvolyayut znahoditi pomilki yaki ridko fiksuyutsya kompilyatorom abo translyatorom oskilki voni ne sintaksichni a semantichni Napriklad instrukciya S if x foo bar pidozrila Mozhlivo programist pomilkovo vikoristav prisvoyuvannya zamist porivnyannya Odnak vona ye cilkom legalnoyu v S i kompilyator yiyi propustit Deyaki virobniki takih instrumentiv stverdzhuyut sho yihni programi mozhut viyaviti ponad 300 riznih potencijnih problem Taki zasobi mozhut buti nadzvichajno korisnimi pri perevirci duzhe velikih obsyagiv sircevogo kodu koli duzhe neefektivno pereglyadati ves kod chi vidstezhuvati vsi shlyahi jogo vikonannya Tipovim prikladom viyavlenoyi problemi mozhe buti zvernennya do zminnoyi do yiyi inicializaciyi Inshim prikladom mozhe buti suvorisha perevirka tipiv yaksho mova takoyi ne maye Takim chinom ci zasobi ye krashimi dlya viyavlennya potencijnih vad na protivagu faktichnim vadam Yak naslidok ci zasobi mayut visokij riven pomilkovogo spracovuvannya Davnya utilita Unix lint ye odnim z najstarishih prikladiv zasobiv takogo tipu Dlya nalagodzhennya elektronnih pristroyiv napriklad a takozh programnogo zabezpechennya nizkogo rivnya BIOS tosho i vbudovanih program zastosovuyut taki instrumenti yak oscilograf POST kontroleri yaki chasto vikoristovuyetsya i v kombinaciyi Voni mozhut vikonuvati bagato tipovih dij zvichajnih znevadzhuvachiv dlya programnogo zabezpechennya Proces znevadzhennyaVidtvorennya pomilki Chasto pershij krok znevadzhennya polyagaye v tomu shob sprobuvati vidtvoriti problemu tobto tochno viznachiti situaciyu koli programa pracyuye nepravilno Vipadok koli programa pracyuye nepravilno zavzhdi ye vidnosno prostim ale chasto problemi proyavlyayutsya tilki pri ekspluataciyi uzhe pislya togo yak programa projshla testuvannya yake ne mozhe pereviriti vsi mozhlivi situaciyi Vidtvorennya problemi mozhe buti osoblivo netrivialnim zavdannyam napriklad u vipadku paralelnih procesiv abo nezvichajnih pomilok Krim togo specifichne vzhivannya programi koristuvachem abo nezvichajne otochennya mozhe znachno uskladniti vidtvorennya problemi Pislya togo yak pomilku vidtvoreno potribno vidiliti tu chastinu programi de vinikaye zbij shob pracyuvati tilki z neyu Chasto dostatno obmezhitisya tilki kilkoma ryadami kodu Take sproshennya mozhna zrobiti vruchnu za dopomogoyu pidhodu rozdilyaj i volodaryuj Programist probuye viluchiti deyaki chastini programi i pereviryaye chi problema vse she isnuye Pri roboti z programami sho vikoristovuyut grafichnomu interfejsi koristuvacha programist sproshuvatime vikno programi pribirayuchi kontrolni elementi j pereviryayuchi chi pomilka vse she zalishayetsya Dlya avtomatizaciyi cogo procesu mozhe vikoristovuvatisya znevadzhennya deltoyu Trasuvannya Cej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno kviten 2013 Pislya togo yak viprobuvannya vipadku sprosheno dostatno programist mozhe rozpochati poshuk ta vipravlennya pomilki Ce mozhna robiti abo vruchnu abo z vikoristannyam znevadzhuvacha Poshirenim ye vstavlyannya v programu dodatkovih instrukciyi sho regulyarno rozdrukovuvali b informaciyu pro hid vikonannya programi Takij metod nazivayetsya trasuvannyam U prostih vipadkah trasuvannya lishe dekilka instrukcij vivodu sho pokazuye znachennya zminnih v pevnih tochkah vikonannya programi Napriklad ifdef DEBUG printf Pered viklikom foo x d n x endif x foo ifdef DEBUG printf Pislya vikliku foo x d n x endif Mozhna vikoristati znevadzhuvach yakij daye dostup do stanu programi znachennya zminnih stek viklikiv i vidstezhiti pohodzhennya pomilki Yaksho mova programuvannya vikoristovuye kompilyator to zazvichaj u binarnomu kodi programi vzhe vtracheno vidpovidnist mizh instrukciyami procesoru ta ryadkami tekstu programi Tomu dlya znevadzhuvacha programu potribno vidkompilyuvati v specialnomu rezhimi de taka vidpovidnist zberezhena Pri comu rozmir binarnogo fajlu programi zrostaye a yiyi vikonannya spovilnyuyetsya Pislya togo yak pomilku znajdeno j vipravleno vidpovidnij fajl potribno vidkompilyuvati v zvichajnomu rezhimi Zazvichaj pri rozrobci programnogo zabezpechennya v integrovanomu seredovishi rezhim znevadzhennya vikoristovuyetsya za umovchannyam a pered postavkoyu programnogo zabezpechennya zamovniku jogo vidklyuchayut Post mortem Cej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno kviten 2013 Inodi pomilku mozhna znajti analizuyuchi procesu Take znevadzhennya nazivayut posmertnim post mortem Deyaki operacijni sistemi stvoryuyut damp vidbitok pam yati procesu pri avarijnomu zavershenni programi programist mozhe utvoriti jogo vruchnu za potrebi napriklad komandoyu operacijnoyi sistemi Unix Dlya zistavlennya pam yati zi zminnimi programi bazhano mati tablicyu simvoliv V roboti dopomagayut specialni programi analizatori dampu Debageri na zrazok gdb tezh mozhut zchitati i proanalizuvati damp Inshi metodi Shukati pomilku mozhna sposterigayuchi za procesom z inshogo komp yutera Dlya zapusku viddalenogo znevadzhennya znevadzhuvach pidklyuchayetsya do viddalenoyi sistemi cherez merezhu Pislya togo yak zv yazok vstanovleno znevadzhuvach mozhe kontrolyuvati vikonannya programi na viddalenij sistemi ta otrimuvati informaciyu pro yiyi stan AntiznevadzhennyaAntiznevadzhennya ye zastosuvannya v komp yuternomu kodi odnogo abo dekilkoh metodiv sho pereshkodzhayut sprobam zvorotnoyi rozrobki ta znevadzhennya cilovogo procesu Vidi pidhodiv Na osnovi API perevirka na nayavnist znevadzhuvachiv vikoristovuyuchi informaciyu pro sistemu Na osnovi obrobki vinyatkovih situacij pereviryayetsya chi jde perehoplennya vinyatkovih situacij Blokuvannya procesiv i potokiv pereviryayetsya chi buli manipulyaciyi z blokuvannyam procesu abo potokiv Zmina kodu pereviryayetsya chi buli zmini v kodi vneseni znevadzhuvachem dlya obrobki programnih tochok zupinu Na osnovi obladnannya ta registriv pereviryayutsya aparatni tochki zupinu i registri procesora Chas i latentnist pereviryayetsya chas vikonannya instrukcij Znevadzhennya mozhe buti pereshkodoyu pri vikoristanni odnogo abo kilkoh z vishezaznachenih metodiv Ye dostatno bagato metodiv antiznevadzhennya dlya zahistu programnogo zabezpechennya vid bilshosti zagroz PrimitkiKorotkij tlumachnij slovnik z informatiki ta informacijnih sistem dlya ekonomistiv L S Kozlovska N M Polishuk K KNEU 2004 S 21 nalagodzhuvannya ros nalazhivanie angl debugging proces viyavlennya ta usunennya pomilok u komp yuternih programah abo obladnanni Anglo ukrayinskij tlumachnij slovnik z obchislyuvalnoyi tehniki internetu i programuvannya K 2006 S 146 debugging 1 nalagodzhennya poshuk i vipravlennya pomilok u rozroblyuvanij programi Kollin S M G Anglo ukrayinskij slovnik komp yuternih terminiv Perekl V Vorobjov H 2002 S 19 adjust regulyuvati nastroyuvati adjustment regulyuvannya nastroyuvannya S 126 debug nalagodzhuvati usuvati nepoladki diyesl testuvannya programi dlya viyavlennya i vipravlennya vsih nepoladok i pomilok debugger nalagodzhuvach programa nalagodzhennya im programne zabezpechennya sho dozvolyaye programistovi znahoditi nespravnosti ta pomilki v programi Korotkij anglo ukrayinskij tlumachnij slovnik z komp yuternoyi tehniki Ukl R Sirenko ta in Lviv LNU 2005 S 22 debugging nalagodzhennya poshuk ta vipravlennya pomilok u programi dlya komp yutera Savruk M P Ukrayinsko anglijskij naukovo tehnichnij slovnik ponad 120 000 sliv ta slovospoluchen NAN Ukrayini Fiziko mehanichnij in t im G V Karpenka K Naukova dumka 2008 Slovniki Ukrayini S 460 461 nalagodzhuvannya nalagodzhennya regulyuvannya adjustment mat setting up avtotr dviguna karbyuratora tune up tunung up komp debugging checkout verstata setting up of a machine tool dviguna engine tune up EOM computer debugging programi programme checkout debugging avtonomne off line debugging distancijne remote debugging ekspluatacijne field adjustment kompleksne complex debugging pokrokove single step debugging poperednye komp prestage Nalagodzhuvach komp programa debugger dialogovij console interactive debugger modelyuvalnij simulation debugger simvolnij symbolic debugger Tlumachnij slovnik suchasnoyi ukrayinskoyi movi Fahova leksika Bl 20000 sl Zag red V Kalashnika H 2009 S 222 223 nalagodzhuvach U sistemah programuvannya programa priznachena dlya analizu funkcionuvannya ta dlya nalagodzhuvannya inshoyi programi Tlumachnij slovnik z informatiki Zag red akad G G Pivnyaka D Nac girn un t 2010 S 68 debugger nalagodzhuvach div debagger Debugging nalagodzhennya Proces znahodzhennya i vipravlennya pomilok u programi S 310 debagger debugger div bag sin nalagodzhuvach programa nalagodzhennya nalagodzhuvalna programa S 441 nalagodzhennya debugging div debagger Proces vikonannya programi z metoyu viyavlennya pomilok Anglijsko ukrayinskij slovnik Matematika ta kibernetika Ye Mejnarovich M Kratko K Perun 2010 560 s debugging ˌdi bʌgɪŋ zneva dzhuvannya zneva dzhennya usuva nnya usu nennya vad nalago dzhuvannya nalago dzhennya vilucha nnya vi luchennya vad U Vikipediyi cej mensh poshirenij termin vzhivayetsya za domovlenistyu dopisuvachiv Grace Hopper 5 bereznya 2016 u Wayback Machine z FOLDOC Zeller p 123 Arhiv originalu za 19 zhovtnya 2016 Procitovano 18 sichnya 2009 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya DOI 10 1109 MSP 2007 71 LiteraturaAndreas Zeller Why Programs Fail A Guide to Systematic Debugging Morgan Kaufmann 2005 ISBN 1 55860 866 4 Dodatkovi materiali David J Agans Debugging The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems AMACOM 2002 ISBN 0 8144 7168 4 Bill Blunden Software Exorcism A Handbook for Debugging and Optimizing Legacy Code APress 2003 ISBN 1 59059 234 4 Ann R Ford Toby J Teorey Practical Debugging in C Prentice Hall 2002 ISBN 0 13 065394 2 Thorsten Grotker Ulrich Holtmann Holger Keding Markus Wloka The Developer s Guide to Debugging Springer 2008 ISBN 1 40205 539 0 Robert C Metzger Debugging by Thinking A Multidisciplinary Approach Digital Press 2003 ISBN 1 55558 307 5 Glenford J Myers The Art of Software Testing John Wiley amp Sons inc 2004 ISBN 0 471 04328 1 John Robbins Debugging Applications Microsoft Press 2000 ISBN 0 7356 0886 5 Matthew A Telles Yuan Hsieh The Science of Debugging The Coriolis Group 2001 ISBN 1 57610 917 8 Dmitry Vostokov Memory Dump Analysis Anthology Volume 1 OpenTask 2008 ISBN 978 0 9558328 0 2PosilannyaDebugging tools katalog posilan Open Directory Project velika zbirka posilan na zasobi ta metodi znevadzhennya Crash dump analysis patterns gruntovna stattya po analizu ta znahodzhennya vad v avarijnih dampah Debugging Tools for Windows GDB The GNU Project Debugger DDD DataDisplayDebuggerDiv takozhMetod kachenyati Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi