Дебагер

Из Википедије, слободне енциклопедије
(преусмерено са Отклањивач грешака)
Winpdb дебагује самог себе

Дебагер или алатка за дебаговање је рачунарски програм који се користи да тестира и дебагује друге програме ("мета" програм), код којег треба да се провери може ли алтернативно бити поркенут на симулатору групе инструкција (ИСС) — техника која даје велику моћ његовој могућности да се заустави када су одређени услови остварени, али ће типично бити спорији него извршавањем кода директно на прикладан (или исти) процесор. Неки дебагери нуде два мода операција — пуну или парцијалну симулацију, да би се ограничио овај утицај. 

"Замка" се јавља када програм не може нормално да настави због програмског бага или нетачног податка. На пример, програм ће можда пробати да користи инструкцију која није доступна на верзији CPU или ће покушати да добије приступ недоступне или заштићене меморије. Када се програм "заглави" или достигне постављени услов, дебагер обично покаже локацију у оригиналном коду ако је то извор-нивоа дебагер или симболички дебагер, често сада виђен у интегрисаном развојном окружењу. Ако је дебагер ниског-нивоа или језик-машин,а дебагер показује линију демонтаже (осим ако оно такође нема онлајн приступ оригиналном изворном коду и може да прикаже прикладну секцију кода из асемблера или компилатора).

Карактеристике[уреди]

Типично, дебагери нуде упитни процесор, решавач симбола, интерпретатор експресије, и подршка дебаг сучеља при његовом највишем нивоу.[1] Дебагери такође нуде префињеније фунцкије као што је стартовање програма корак по корак (једноставно- корачање или анимација програма), заустављање (кидање) (паузирање програма да би се испитало тренутно стање) при неком догађају или специфичној инструкцији од стране тачке прекида, и праћење вредности варијабли.[2] Неки дебагери имају могућност да модификују стање програма док раде. Може такође бити могуће наставити извршавање на другој локацији у програму преко заобилажења рушења или логичке грешке.

Иста функционалност која чини дебагер корисним за елиминисање багова дозвољава да буде коришћена у алатки за крековање софтвера да би се извегла заштита копирања, менаџмент дигиталних правила, и остале карактеристике протекције софтвера. Оно га често чини корисним као генерална алатка провере, покривеност грешке и анализер перформанса, специјално ако су инструкције дужине пута показане.  T[3]

Већина редовних дебаг мотора, као што су gdb и dbx, пружају командне линије сучеља базираним на конзоли. Дебагерови напред-завршице су популарне екстензије за дебагерове моторе који пружају ИРО интеграцију, програмску анимацију и визуелне карактеристике. Неки ранији мејнфрејм дебагери као што су Оливер и СИМОН пружили су ове исте карактеристике за   IBM Систем/360 и за касније оперативне системе, као и давних 1970-тих.

Обрнуто дебаговање[уреди]

Неки дебагери укључују карактеристику названу "обрнуто дебаговање", такође познато као "историјско дебаговање" или "дебаговање уназад". Ови дебагери чине могућим извршавање програма уназад кроз време. Различити дебагери имају ову карактеристику. Мајкрософт Вижуал Студио (2010 Ултимативна едиција, 2012 Коначна, 2013 Коначна и 2015 Ентерпрајс едиција) нуди IntelliTrace обрнуто дебаговање за С#, Вижуал Бејсик .NET, и неке друге језике, али не С++.  Дебаговање уназад такође постоји за С, С++, Јаву, Пајтон, Перл и остале језике. Неки су отвореног извора; неки су власнички комерцијални софтвер. Неки обрнути дебагери успоравају мету збор реда величина, али најбољи обрнути дебагери проузрокују супоравање за 2× или мање. Обрнуто дебаговање је веома корисно за одређене типове проблема, али се још не користи често .[4]

Језичка зависност[уреди]

Неки дебагери раде једном специфичном језику док остали могу да раде на више лазика одједном- На пример ако је главна мета програм написан у Коболу али позива рутине асемблер језика и ПЛ/1  подрутине, дебагер ће можда морати да мења динамично модове како би се прилагодио променама у језику док се оне дешавају.

Заштита меморије[уреди]

Неки дебагери такође обухватају заштиту меморије како би избегли кршења складиштења као што је прекорачење бафера. Ово може бити веома важно код окружења трансакције процеса где је меморија динамично издвојена из "базена" меморије на задатку помоћу основа задатка.

Подршка хардвера за дебаговање[уреди]

Највише модерних микропроцесора имају најмање једну од ових карактеристика у њиховом CPU дизајну да би учинили дебаговање лакшим:

  • Подршка хардвера за једно-корачни програм, као што је замка застава
  • Група инструкција која се сусреће са Попековим и Голдберговим захтевима виртуализације чини лакшим писање софвера дебагера који ради на истом CPU као дебаговани софтвер; такав CPU може извршити унутрашње петље програма преко теста при пуној брзини, и идаље остати под контролом дебагера. 
  • У-систему програмирање омогућава спољном хардверу дебагера да поново програмира систем под тестом (на пример, додвајући или отклањајући инструкција тачака прекида). Многи системи са таквом ISP подршком такође имају друге хардвер подршке дебаговања.
  • Хардвер подршка за код и податке тачке прекида, као што је адреса компаратора и вредност података компаратора или, са знатно више посла укљученим, хардвер грешке стране.[5]
  • JTAG приступ сучељу хардвера дебага као они на ARM архитектури процесора или коришћење Nexus командног сета. Процесори коришћени у уграђеним системима типично имају обимну JTAG подршку дебага. 
  • Микро контролери мали као шест игли је потребно да користе ниске игле-бројаче замене за JTAG, као што су BDM, Шпијунирање-преко-жице, или дебагWIRE на Atmel AVR. ДебагWIRE, на пример, користи бидирекционо сигнализирање на RESET игли. 

Дебагер предњи-крајеви[уреди]

Неки од највише способних и популарних дебагера имплементују само једноставну командну линију сучеља (КЛС)—често како би се повећала портабилност и смањила потрошња ресурса. Развојници типично разматрају дебагивање преко графичког корисничког сучеља(ГКС) лакшим и продуктивнијим. Ово је разлог за визуалне предње-крајеве, који дозвољавају корисницима да прате и контролишу подређени CLI - само дебагери преко графичког корисничког сучеља. Неки ГКС дебагери предњих-крајева су дизајнирани да буду компатибилни са различитим CLI-само дебагерима, док су остали нациљани од стране специфичног дебагера. 

Листа дебагера[уреди]

Неки широко коришћени дебагери су:

Ранији дебагери минирачунара укључују:

Ранији Мејнфрејм дебагери укључују (поређани по датумима излазка):

Тренутни мејнфрејм дебагери:

  • Дебаг алатка за z/OS [6]
  • XPEDITER и Отпремник CICS
  • z/XDC [7]

Референце[уреди]

  1. Aggarwal & Kumar. стр. 302.
  2. Aggarwal & Kumar (2003). стр. 301.
  3. Aggarwal & Kumar. стр. 307-312.
  4. Philip Claßen; Undo Software.
  5. Aggarwal & Kumar (2003). стр. 299-301.
  6. "IBM Debug Tool for z/OS, V13.1" (PDF).
  7. "IBM Global Solutions Directory - z/XDC Extended Debugging Controller z2.1".

Литература[уреди]

  • Sanjeev Kumar Aggarwal and M. Sarath Kumar (2003). "Debuggers for Programming Languages". In Y.N. Srikant and Priti Shankar. The Compiler Design Handbook: Optimizations and Machine Code Generation. Boca Raton, Florida: CRC Press. ISBN 978-0-8493-1240-3. стр. 295–327.
  • Jonathan B. Rosenberg. How Debuggers Work: Algorithms, Data Structures, and Architecture. John Wiley & Sons. ISBN 0-471-14966-7.

Спољашње везе[уреди]