Кіріспе

Бағдарламалық жасақтаманы әзірлеуде қолданылатын қателерді жою әдісі.

Бағдарламалық жасақтаманы әзірлеуде үзіліс нүктесі – бағдарламаның қасақана тоқтатылатын немесе кідірістірілетін орны, ол қателерді жою мақсатында қойылады. Оны кейде жай ғана кідіріс деп те атайды. Жалпы алғанда, үзіліс нүктесі – бағдарлама орындалып жатқанда оның жұмысы туралы мәлімет алуға мүмкіндік беретін құрал. Тоқтату кезінде бағдарламашы сынақ ортасын (жалпы мақсаттағы тіркегіштер, жад, журналдар, файлдар және т.б.) тексеріп, бағдарламаның күтілгендей жұмыс істеп тұрғанын анықтайды. Іс жүзінде үзіліс нүктесі – бағдарламаның орындалуын қашан тоқтату керектігін анықтайтын бір немесе бірнеше шарттардан тұрады.

Тарих

Бағдарламашы Бетти Холбертон ENIAC үшін, ең алғашқы цифрлық компьютерлердің бірі үшін, тоқтау нүктелерін ойлап тапты. ENIAC-тің бастапқы жобасында бағдарламаның ағыны бір бөлімнен екіншісіне кабельдерді қосу арқылы анықталды. Бағдарламаны белгілі бір жерде тоқтату үшін, тоқтау нүктесі деп аталатын кабель шығарылып тасталды.

Машинаның үзілу нүктелері

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

Интерактивті емес тоқтамдар

Бағдарламашылар компьютерлердің пайда болған алғашқы күндерінен бері, жүйені тоқтату үшін бір ғана деструктивті үзіліс нүктесін орнатуға машиналық кодты өзгертулерді пайдаланған. Ядролық төгілу (core dump) жүйені қасақана тоқтату ("авария") кезіндегі тіркеуіштер мен жадтың күйін сақтаған.

Интерактивті үзіліс нүктелері

1960-шы жылдары телетайппир консольдарының пайда болуы командалық жолмен түзету мүмкіндіктерін кеңейтті, бірақ 1970-ші жылдардың басында және кең таралған бейне мониторлардың пайда болуымен ғана көп тапсырмалы ортада толыққанды интерактивті, толық экранды түзету мүмкіндігі іске асты. Бұл сонымен қатар бағдарламаны қадамдық түрде орындауға, нақты бағдарлама анимациясы сияқты, бір мезгілде тіркеуіштер мен жадтың өзгеруін көрсетуге мүмкіндік берді. Алғашқыда мұндай анимация бөлшектелген немесе декомпиляцияланған машиналық код деңгейінде болды, бірақ кейіннен жоғары деңгейлі бағдарламалау тілінің (HLL) бастапқы код деңгейіне дейін жетілді.

Шартты бұзылу нүктелері

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

Тексеру құралдары

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

Тіркелу нүктелері

Логпойнт – орындауды тоқтатудың орнына ақпаратты ғана басып шығаратын (немесе "жазатын") үзіліс нүктесінің бір түрі. Әдетте, бағдарламашы орындалу белгілі бір нүктеге жеткенде көрсетілетін хабарламаны және/немесе айнымалылардың мәнін анықтай алады. Логпойнттер – бағдарламаны қатесіздендіру үшін (кейде printf қатесіздендіру деп те айтылады) бағдарламаға жазу операторларын қосудың орнына қолданылатын нұсқа және бағдарламаны өзгерту мүмкін болмаған жағдайларда (мысалы, бағдарлама шақыратын сыртқы кітапхананы қатесіздендіру кезінде) ерекше пайдалы.

Жабдық

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