9.1 Bug-ların yaranması
Proqram təminatının debug olunması — proqramdakı səhvlərin və ya bug-ların tapılması və düzəldilməsi prosesidir. Bu, proqram təminatının işləmə düzgünlüyünü təmin etməyə kömək edən inkişafın ən maraqlı hissəsidir.
"Bug" termininin yaranma tarixi
"Bug" termini (səhv) kompüter proqramları kontekstində ilk dəfə 1940-cı illərdə istifadə olunmağa başlanıb. Baxmayaraq ki, "bug" anlayışı kompüterlərin yaranmasından əvvəl də mövcud olub və müxtəlif cihazlardakı mexaniki nasazlıqları ifadə edirdi.
"Bug" termininin kompüter texnologiyasında ilk dəfə sənədli hallarda istifadə olunması 1947(!)-ci ildə Harvard Universitetində Mark II kompüterində işləyən bir komanda ilə bağlıdır. Komanda maşının relelərindən birinin işləmədiyini gördü, çünki içəriyə bir güvə düşmüşdü. Onlar həşəratı çıxarıb bunu jurnal kimi qeyd etdilər: "ilk real həşəratın (literal bug) aşkar olunması".
Bu, "bug" termininin səhvləri ifadə etmək üçün ilk istifadəsi olmasa da, hadisə daha geniş tanındı və "bug" termininin populyarlaşmasına səbəb oldu.
Proqramın debug olunması
Debug — proqram təminatında bug-ların tapılması, diaqnostikası və düzəldilməsi prosesidir. Debug prosesi bir neçə mərhələdən ibarətdir:
- Səhvin aşkar edilməsi: Proqramda səhv olduğunu göstərən əlamətlərin müəyyən edilməsi.
- Səhvin təkrar olunması: Səhvin təbiətini daha yaxşı başa düşmək üçün səhvi yenidən göstərən şərtlərin yaradılması.
- Problemin diaqnostikası: Kodu təhlil etmək və səhvin səbəbini tapmaq üçün müxtəlif alətlər və metodlardan istifadə edilməsi.
- Səhvin düzəldilməsi: Səhvi aradan qaldırmaq üçün koda dəyişikliklərin edilməsi.
- Test: Düzəlişi yoxlamaq və proqramı test etmək üçün, səhvin aradan qaldırılmasını və yeni problemlərin yaranmamasını təmin etmək.
Deməli, bug — proqramlardakı hər hansı bir səhvin ümumi adıdır, debug (de-bug) isə bu səhvlərin aşkarlanması və aradan qaldırılması prosesidir.
9.2 Debug üçün alətlər və metodlar
Log yazma
Proqram koduna log əlavə etmək onun icrasını izləməyə və müxtəlif icra nöqtələrində dəyişənlərin və əməliyyatların vəziyyəti haqqında məlumat əldə etməyə imkan verir. JavaScript-də log yazmaq üçün əla bir kitabxana var — winston.
Log istifadə nümunəsi:
const { createLogger, format, transports } = require('winston');
// Debug səviyyəsi ilə logger yaradılır
const logger = createLogger({ level: 'debug' });
// Bölmə funksiyası
function divide(a, b) {
logger.debug(`Bölünür: ${a} / ${b}`);
if (b === 0) {
logger.error("Sıfıra bölmə cəhdi!");
return null;
}
return a / b;
}
// Funksiyanın istifadə nümunəsi
const result = divide(10, 2);
console.log(result); // Çap edəcək: 5
Debuggers istifadə etmək
Debugger-lər - proqramçıların proqramı addım-addım icra etməsinə, breakpoints (dayandırma nöqtələri) qoymasına, dəyişənlərin qiymətlərini yoxlamasına və onları proqramın icrası zamanı dəyişməsinə imkan verən alətlərdir.
JavaScript üçün məşhur debugger-lər:
- Chrome DevTools: Google Chrome brauzerində inteqrasiya olunmuş debugger
- Firefox Developer Tools: Mozilla Firefox brauzerində inteqrasiya olunmuş debugger
- Node.js Debugger: Node.js-də server tərəfli JavaScript üçün inteqrasiya olunmuş debugger
- Visual Studio Code Debugger: Visual Studio Code redaktorunda inteqrasiya olunmuş debugger
Node.js-də debugger istifadə nümunəsi:
// Daxili debug modulunun importu
const { inspect } = require('util');
// Xətası olan funksiyanın nümunəsi
function faultyFunction(a, b) {
debugger; // Breakpoint qoyulur
let result = a / b;
return result;
}
// Xətası olan funksiyanın çağırışı
console.log(faultyFunction(10, 0));
Proqram debugger-ə çatdığı zaman dayanır və siz addım-addım irəliləmə (step over), daxil olma (step into), çıxış (step out) kimi debug əmrindən istifadə edə, dəyişənlərin qiymətlərini yoxlaya bilərsiniz.
Biz sizinlə proqramların debug edilməyini Intellij IDEA-ya (Ultimate Edition versiyası lazımdır) inteqrasiya olunmuş debugger nümunəsi üzərində öyrənəcəyik.
9.3 debug istifadəsi
Ümumilikdə debug, səhvləri aşkar etmək və düzəltmək üçün aktiv şəkildə debug alətlərindən və təcrübələrindən istifadəni əhatə edir.
Sazlama addımları:
- Breakpoints (dayanma nöqtələri) təyin etmək: maraqlandığınız yerlərdə proqramı dayandırmaq üçün kodda dayanma nöqtələri təyin edin.
- Addım-addım icra: proqramı addım-addım işə salın, proqramın vəziyyətindəki dəyişiklikləri və dəyişənlərin qiymətlərini izləyin.
- Dəyişənlərin analizi: proqramın müxtəlif mərhələlərində dəyişənlərin və ifadələrin qiymətlərini öyrənin, düzgün olmayan məlumatları və ya məntiq səhvlərini aşkar edin.
- Səhvlərin düzəldilməsi: aşkar etdiyiniz səhvləri aradan qaldırmaq üçün kodda dəyişikliklər edin.
- Təkrar testlər: səhvlər düzəldildikdən sonra proqramı yenidən test edin ki, səhvlərin aradan qalxdığından və yeni problemlərin yaranmadığından əmin olasınız.
Sadə görünür, elə deyil? Baxın, növbəti dərsdə bu addımları daha ətraflı öyrənəcəyik :)
GO TO FULL VERSION