C nosozliklarni tuzatish (debugging)


ULASHISH

Nosozliklarni tuzatish (debugging)

Nosozliklarni tuzatish (debugging) — dasturingizdagi xatolarni (bug) topish va tuzatish jarayoni.

Bug deb dasturingizning ishdan chiqishiga, noto‘g‘ri ishlashiga yoki noto‘g‘ri natija berishiga sabab bo‘ladigan xatolarga aytiladi.

Nosozliklarni tuzatishni boshlashdan oldin kodingiz toza va tartibli ekaniga ishonch hosil qiling:

  • Tuzilma aniq bo‘lishi uchun to‘g‘ri chekinishlardan (indentation) foydalaning.
  • O‘zgaruvchilaringizga ular nimani saqlashini tasvirlaydigan aniq va ma’noli nomlar bering.

Toza kodni o‘qish ham, undagi nosozliklarni tuzatish ham osonroq!

Quyidagi bo‘limlarda nosozliklarni tuzatishning bir nechta keng tarqalgan usullari bilan tanishtiramiz.


1. Chiqarish orqali debugging (print debugging)

Nima noto‘g‘ri ketayotganini ko‘rish uchun kodingizning turli nuqtalarida qiymatlarni printf() yordamida chiqaring:

int x = 10; int y = 0; printf("Before division\n"); // Debug output int z = x / y; // Crashes (division by zero) printf("After division\n"); // Never runs

Agar "After division" yozuvini ko‘rmasangiz, dastur x / y qatorida ishdan chiqqan.


2. O‘zgaruvchilar qiymatlarini tekshiring

O‘zgaruvchilar kutganingizdek ekanini ko‘rish uchun ularni chiqaring:

int x = 10; int y = 5; int result = x - y; printf("Result: %d\n", result); // Result: 5

Natija 15 bo‘lishini kutganmidingiz? Demak, mantiq noto‘g‘ri: uning o‘rniga x + y ifodasidan foydalanib ko‘ring.


3. Debugger vositasidan foydalaning

Visual Studio, Code::Blocks va VS Code kabi IDE’larda C bilan ishlaydigan o‘rnatilgan debugger’lar mavjud. Bu vositalar quyidagilarni amalga oshirish imkonini beradi:

  • To‘xtash nuqtalari (breakpoints) yordamida dasturingizni pauza qilish
  • Kodingizni qatorma-qator bosqichma-bosqich bajarish
  • O‘zgaruvchilarni kuzatish va ular o‘zgarayotganda kutilmagan qiymatlarni ko‘rish

Maslahat: Nosozliklarni printf() yordamida tuzatishdan boshlang. Bunga ko‘nikkaningizdan so‘ng, kodingizni yanada chuqurroq tushunish uchun IDE’ngizdagi debugger’ni o‘rganing.



4. Xato xabarlaridan o‘rganing

C kompilyatori va bajarilish vaqtidagi xatolar ko‘pincha nima noto‘g‘ri ketganini va qayerda ekanini aytib beradi. Masalan:

error: expected ';' before 'printf'

Oson yechim: tushib qolgan nuqtali vergulni qo‘ying!


Xavfsiz tekshiruvlar bilan debugging

Ba’zi xatolar, masalan, nolga bo‘lish (bu sahifaning birinchi misolida ishlatilgan), dasturning ishdan chiqishiga sabab bo‘lishi ma’lum.

Agar biror amal muvaffaqiyatsiz bo‘lishi mumkinligini bilsangiz, uni oldindan tekshirib, dasturning ishdan chiqishining oldini olishingiz mumkin:

Misol

int main() {   int x = 10;   int y = 0;   printf("Before division\n");   if (y != 0) { // // Check that y is not zero before dividing     int z = x / y;     printf("Result: %d\n", z);   } else {     printf("Error: Division by zero!\n"); // // Print error message instead of crashing   }   printf("After division\n");   return 0; }
O‘zingiz sinab ko‘ring »

Endi dastur ishdan chiqish o‘rniga xato xabarini chiqaradi va ishlashda davom etadi. Bu xavfsiz va debug qilish oson bo‘lgan kod yozishning muhim qismidir.

Yana bir misol — massiv chegarasidan tashqariga murojaat qilish

Massivdan tashqaridagi elementlarga murojaat qilish — yana bir keng tarqalgan xato.

Quyidagi misolda indeks qiymatidan foydalanishdan oldin uni tekshirish uchun printf() funksiyasidan foydalanamiz:

Misol

int main() {   int numbers[3] = {10, 20, 30};   int index = 5;   printf("Index = %d\n", index);   if (index >= 0 && index < 3) { // Make sure the index is within the valid range (0 to 2)     printf("Value = %d\n", numbers[index]);   } else {     printf("Error: Index out of bounds!\n");   }   return 0; }
O‘zingiz sinab ko‘ring »

Xulosa

  • Qiymatlarni chiqarish va kodingizni kuzatib borish uchun printf() funksiyasidan foydalaning.
  • Xato xabarlarini diqqat bilan o‘qing — ular ko‘pincha nima noto‘g‘ri ketgani va qayerda ekanini aytib beradi.
  • Ishdan chiqishlarning oldini olish uchun ular sodir bo‘lishidan oldin tekshiruvlar (masalan, if (y != 0)) qo‘shing.
  • Nosozliklarni chuqurroq tuzatishga tayyor bo‘lganingizda IDE’dagi debugger’dan foydalaning.
  • Nosozliklarni tuzatish dasturingizni yaxshiroq tushunish va muammolarni tezroq bartaraf etishga yordam beradi.

Xatolarni qayta ishlash

Debugging ishlab chiqish jarayonida koddagi xatolarni topish va tuzatishga qaratilgan bo‘lsa, xatolarni qayta ishlash dastur ishlayotgan paytda muammolarni hal qilish va biror narsa noto‘g‘ri ketganda muayyan kodni bajarish usulidir.

NULL ko‘rsatkichlar va xatolarni qayta ishlash haqida keyingi boblarda bilib olasiz.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!