Кіріспе

Басқа бағдарламаларды сынау және жөндеу үшін қолданылатын компьютерлік бағдарлама. Дебьюггер немесе жөндеу құралы – басқа бағдарламаларды сынау және жөндеуге арналған компьютерлік бағдарлама (“мақсатты” бағдарлама). Дебьюггердің негізгі мақсаты – мақсатты бағдарламаны бақыланатын жағдайларда іске қосу, бағдарламашыға оның орындалуын қадағалауға және компьютерлік ресурстардағы өзгерістерді бақылауға мүмкіндік беру, бұл өзгерістер жұмыс істемейтін кодты көрсетуі мүмкін. Типикалық жөндеу мүмкіндіктеріне мақсатты бағдарламаны белгілі бір нүктелерде іске қосу немесе тоқтату, жад, CPU регистрлері немесе сақтау құрылғыларының (мысалы, дискілер) мазмұнын көрсету, сондай-ақ қателі бағдарлама орындалуына себеп болуы мүмкін сынақ деректерін енгізу үшін жад немесе регистр мазмұнын өзгерту кіреді. Тексерілетін код нұсқамалар жиынтығын симуляциялайтын құралда (ISS) орындалуы мүмкін, бұл белгілі бір шарттар орындалғанда тоқтатуға мүмкіндік береді, бірақ әдетте тиісті (немесе бірдей) процессорда тікелей орындаудан ақырын жұмыс істейді. Кейбір дебьюггерлер осы әсерді азайту үшін толық немесе ішінара симуляция режимін ұсынады. “Тұзақ” жағдайы бағдарламалау қатесі немесе жарамсыз деректердің салдарынан бағдарламаның қалыпты жұмысын жалғастыра алмағанда туындайды. Мысалы, бағдарлама ағымдағы CPU нұсқасында қолжетімсіз нұсқаулықты пайдалануға тырысқан немесе қолжетімді емес немесе қорғалған жадқа қол жеткізуге тырысқан болуы мүмкін. Бағдарлама “тұзаққа” түскенде немесе алдын ала белгіленген шартқа жеткенде, егер ол бастапқы код деңгейіндегі дебьюггер немесе символдық дебьюггер болса, дебьюггер әдетте бастапқы кодтағы орналасқан жерін көрсетеді, мұндай мүмкіндіктер интеграцияланған даму орталарында жиі кездеседі. Егер ол төмен деңгейдегі дебьюггер немесе машиналық тілдегі дебьюггер болса, ол дисасемблингтегі жолды көрсетеді (егер ол бастапқы кодқа онлайн қол жеткізімділікке ие болмаса және құрастырудан немесе компиляциядан тиісті код бөлігін көрсетуге мүмкіндік бермесе).

Ерекшеліктері

Әдетте, жөндеушілер (дебаггерлер) сұраныс процессорын, символдарды анықтаушыны, өрнектерді түсіндірушіні және жоғарғы деңгейде жөндеуді қолдау интерфейсін ұсынады. Жөндеушілер сонымен қатар бағдарламаны қадам-қадаммен орындау (бір қадамдық орындау немесе бағдарламалық анимация), белгілі бір оқиғада немесе көрсетілген нұсқауда тоқтату (үзіліс нүктесі арқылы бағдарламаны ағымдағы күйін тексеру үшін тоқтату) және айнымалылардың мәнін қадағалау сияқты күрделі функцияларды ұсынады. Кейбір жөндеушілер бағдарлама жұмыс істеп жатқанда оның күйін өзгертуге мүмкіндік береді. Сондай-ақ, бағдарламаның басқа бөлігінде орындалуды жалғастыруға болады, мысалы, қатеге немесе логикалық қатеге тап болғанда оны айналып өту үшін. Жөндеушіні қателерді түзетуге пайдалы ететін функционалдық мүмкіндіктер, оны бағдарламалық қамтамасыз етуді көшіруден қорғау, цифрлық құқықтарды басқару және басқа да қорғау шараларын бұзу үшін қолдануға мүмкіндік береді. Ол сонымен қатар жалпы тексеру құралы, ақауларды жабу және өнімділікті талдау құралы ретінде де пайдалы, әсіресе нұсқаулардың орындалу жолының ұзындығы көрсетілгенде. Дискіде сақтау құрылғысы бар алғашқы микрокомпьютерлер, бұзылған каталогтар немесе тіркелім деректерін диагностикалау және қалпына келтіруге, "өшірілген" файлдарды қайта қалпына келтіруге немесе файлдарға қойылған парольді бұзуға мүмкіндік алды. Gdb және dbx сияқты көптеген негізгі жөндеу қозғалтқыштары консольдік командалық жол интерфейсін ұсынады. Жөндеушілердің интерфейстері – бұл IDE интеграциясын, бағдарламалық анимацияны және визуализация мүмкіндіктерін қамтамасыз ететін жөндеу қозғалтқыштарының танымал кеңейтімдері.

Жазу және қайталау қателерін түзету

Жазу және қайта ойнату арқылы жөндеу, сондай-ақ "бағдарламалық ұшуды жазу" немесе "бағдарлама орындалуын жазу" деп те аталады, қолданбаның күйіндегі өзгерістерді тіркеп, бағдарламаның әрбір командасы орындалғанда дискіге сақтайды. Бұл жазбаны қайта-қайта ойнатуға болады және ақауларды анықтау және жою үшін оны интерактивті түрде жөндеуге болады. Жазу және қайта ойнату арқылы жөндеу қашықтан жөндеу үшін, сондай-ақ сирек кездесетін, болжамсыз және қайта жасау қиын ақауларды жою үшін өте тиімді.

Кері жөндеу

Кейбір жөндеушілерде "кері жөндеу" деп аталатын, сондай-ақ "тарихи жөндеу" немесе "артқа қарай жөндеу" мүмкіндігі бар. Бұл жөндеушілер бағдарламаның орындалуын уақыт бойынша кері қадаммен орындауға мүмкіндік береді. Әртүрлі жөндеушілерде осы мүмкіндік кездеседі. Microsoft Visual Studio (2010 Ultimate нұсқасы, 2012 Ultimate, 2013 Ultimate және 2015 Enterprise нұсқасы) C#, Visual Basic NET және басқа да кейбір тілдер үшін IntelliTrace кері жөндеуін ұсынады, бірақ C++ үшін ұсынбайды. C, C++, Java, Python, Perl және басқа тілдер үшін де кері жөндеушілер бар. Олардың кейбіреулері ашық кодты, ал кейбіреулері – коммерциялық, меншік бағдарламалық құралдар. Кейбір кері жөндеушілер нысананың жұмысын бірнеше есе баяулатады, бірақ ең жақсылары 2 есе немесе одан да аз баяулатады. Кері жөндеу белгілі бір мәселелерді шешуде өте пайдалы, бірақ әлі кеңінен қолданылмайды.

Уақытпен саяхаттаудың қатесін түзету

Кері дебьюгерлердің мүмкіндіктерінен өзге, уақыт саяхатымен жөндеу пайдаланушыларға бағдарламамен өзара әрекеттесуге, қажет болса тарихты өзгертіп, бағдарламаның бұған қалай ден қоятынын көруге мүмкіндік береді.

Тілге тәуелділік

Кейбір жөндеу құралдары нақты бір тілде жұмыс істейді, ал басқалары бірнеше тілді түсінікті түрде қолдай алады. Мысалы, егер негізгі бағдарлама COBOL тілінде жазылған болса, бірақ құрастыру тіліндегі шақырулар мен PL/1 шақыруларын пайдаланса, жөндеу құралы тіл өзгеретін кезде динамикалық түрде режимдерді ауыстыруға мәжбүр болуы мүмкін.

Жадыны қорғау

Кейбір жөндеушілер буфердің толып кетуі сияқты жад бұзушылықтарын болдырмау үшін жадты қорғау мүмкіндігін де қамтиды. Бұл, әсіресе, жады тапсырмалар бойынша динамикалық түрде жад "қоймаларынан" бөлінетін операцияларды өңдеу орталарында маңызды болып табылады.

Қателерді түзеушілердің алдыңғы жақтары

Кейбір ең қабілетті және танымал жөндеу құралдары тек қарапайым командалық қатар интерфейсін (CLI) қолданады – көбінесе портативтілікті максималдау және ресурстарды азайту үшін. Әдетте, бағдарламашылар графикалық пайдаланушы интерфейсі (GUI) арқылы жөндеуді оңайырақ және тиімдірек деп санайды. Сондықтан, пайдаланушыларға графикалық интерфейс арқылы ғана командалық қатар интерфейсінде жұмыс істейтін жөндеу құралдарын бақылауға және басқаруға мүмкіндік беретін графикалық алдыңғы панельдер пайда болды. Кейбір GUI жөндеу құралдарының алдыңғы панельдері әртүрлі CLI жөндеу құралдарымен үйлесімді болу үшін жасалған, ал басқалары нақты бір жөндеу құралына арналған.