8.1 Bug-ların yaranması
Proqram təminatının ayıklanması — proqramdakı səhvlərin və ya bug-ların tapılması və düzəldilməsi prosesidir. Bu proses proqram təminatı inkişafının ən maraqlı və vacib hissəsidir və proqramların düzgün işləməsini təmin edir.
"Bug" termininin yaranma tarixi
"Bug" (səhv) termini kompüter proqramları kontekstində ilk dəfə 1940-cı illərdə istifadə olunmağa başlanmışdır. Baxmayaraq ki, "bug"-ların konsepsiyası kompüterlərdən əvvəl də mövcud idi və müxtəlif cihazlarda mexaniki nasazlıqları bildirirdi.
"Bug" termininin kompüter texnikasında ilk sənədləşdirilmiş istifadəsi 1947(!)-ci ildə Harvard Universitetində Mark II kompüteri üzərində işləyən komandanın kəşfi ilə əlaqəlidir. Komanda, maşının bir relesinin işləməməsinin səbəbini onun içinə qonan güvənin olduğunda gördülər. Onlar güvəni çıxardı və bunu jurnalda "həqiqi həşəratın kəşf edilməsinin ilk real halı" (literal bug) kimi qeyd etdilər.
Baxmayaraq ki, bu "bug" termininin səhvləri ifadə etmək üçün ilk istifadəsi deyildi, bu hadisə məşhur oldu və "bug" termininin populyarlaşmasına təkan verdi.

Proqramın ayıklanması
Ayıklama — proqram təminatındakı bug-ların axtarışı, diaqnostikası və düzəldilməsi prosesidir. Ayıklama prosesi bir neçə mərhələdən ibarətdir:
- Səhvin aşkarlanması: Proqramda səhvin mövcudluğunu göstərən simptomların müəyyən edilməsi.
- Səhvin təkrar yaradılması: Səhvin təbiətini daha yaxşı başa düşmək üçün, səhvin yenidən görünməsini təmin edən şərtlərin yaradılması.
- Problemin diaqnostikası: Kodun analiz edilməsi və səhvin səbəbinin tapılması üçün müxtəlif alət və metodlardan istifadə edilməsi.
- Səhvin düzəldilməsi: Səhvi aradan qaldırmaq üçün koda dəyişikliklərin edilməsi.
- Testləşdirmə: Düzəlişin yoxlanılması və proqramın yenidən test edilməsi ki, səhvin aradan qalxdığından və yeni problemlərin yaranmadığından əmin olmaq.
Belə ki, bug — proqramlardakı istənilən səhvlər üçün ümumi bir addır, debug isə — həmin səhvlərin aşkarlanması və aradan qaldırılması prosesidir.
8.2 Sazlama alətləri və üsulları
Loqlaşdırma
Proqram koduna loqları əlavə etmək, onun icrasını izləməyə və proqramın müxtəlif nöqtələrində dəyişənlərin və əməliyyatların vəziyyəti barədə məlumat əldə etməyə imkan verir. Python-da loqlaşdırma üçün əla bir kitabxana mövcuddur — logging
.
Loqlaşdırma istifadəsi nümunəsi:
import logging
# Debug məlumatları üçün loqlaşdırmanın sazlanması
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Bölmə cəhdini loqlaşdırırıq
logging.debug(f"Ədədlərin bölünməsi: {a} / {b}")
if b == 0:
# b sıfırdırsa, xətanı loqlaşdırırıq
logging.error("Sıfıra bölmə cəhdi!")
return None
# b sıfır deyilsə, bölməni edirik
return a / b
result = divide(10, 2)
print(result)
Debuggers istifadəsi
Debuggers — bu, proqramçılara proqramı addımbaaddım icra etməyə, dayandırma nöqtələri (breakpoints)
təyin etməyə, dəyişənlərin dəyərlərini yoxlamağa və proqramın icrası zamanı onları dəyişməyə imkan verən alətlərdir.
Məşhur debuggerlər:
- GDB: C, C++ və digər proqramlaşdırma dilləri üçün GNU Debugger.
- PDB: Python-un daxili debugger-i.
- Visual Studio Debugger: Microsoft Visual Studio-ya inteqrasiya edilmiş debugger.
- PyCharm Debugger: Python üçün PyCharm IDE-yə inteqrasiya edilmiş debugger.
PDB
nümunəsi
import pdb
def faulty_function(a, b):
pdb.set_trace() # Dayandırma nöqtəsinin təyini
result = a / b
return result
faulty_function(10, 0)
Proqram pdb.set_trace()
-yə çatanda dayanır və siz debugger komandalarını icra edə bilərsiniz, məsələn next
(növbəti addım), print
(dəyişənin dəyərinin çapı) və s.
Biz PyCharm-da daxili debugger nümunəsi əsasında proqram debug etməyi öyrənəcəyik.
8.3 Debug istifadə etmək
Ümumi halda debug alətlərindən aktiv istifadə və praktika ilə problemləri tapmaq və onların həllini nəzərdə tutur.
Dayandırma nöqtələrinin əlavə edilməsi: Koda dayandırma nöqtələri əlavə edin, proqramın sizi maraqlandıran yerlərdə icrasını dayandırması üçün.
Addım-addım icra: Proqramı addım-addım icra edin, proqramın vəziyyətindəki dəyişiklikləri və dəyişənlərin dəyərlərini müşahidə edin.
Dəyişənlərin analizi: Proqramın müxtəlif mərhələlərində dəyişənlərin və ifadələrin dəyərlərini öyrənin, səhv məlumatları və ya məntiqi səhvləri müəyyənləşdirin.
Səhvlərin düzəldilməsi: Tapılmış səhvləri aradan qaldırmaq üçün koda dəyişikliklər edin.
Yenidən test etmək: Səhvləri aradan qaldırdıqdan sonra proqramı test edin ki, problemin həll olunduğuna və yeni problemlərin yaranmadığına əmin olasınız.
Asan görsənir, elə deyilmi? Gələn mövzuda bu addımları daha detallı şəkildə nəzərdən keçirəcəyik :)
GO TO FULL VERSION