CodeBlanks Logo Icon CodeBlanks

Özet - Hata ayıklama

  • C kursu
  • Orta seviye
  • Ders 99/116
  • 5 dk

gdb ve valgrind'i birleştirerek bir programda hata ayıklarsın.

Hata ayıklama özeti

Bu özette gdb, breakpoint, watch/print, valgrind ve printf debugging kavramlarını birleştiren bir program yazacaksın. Program, dinamik bellek kullanan ve izleme çıktıları içeren bir dizi işlemi yapar.

Yapı şu şekilde: make_array fonksiyonu malloc ile dizi ayırır ve kareleri doldurur. main bu diziyi alır, izleme iletisi yazdırır, toplamı hesaplar, belleği serbest bırakır ve son bir izleme yazdırır. Bu program hem gdb'de adım adım izlenebilir hem de valgrind ile sızıntı denetimi yapılabilir. İzleme çıktıları sayesinde her aşamayı görebilirsin.

Uygulama Özet program yaz

int *make_array(int n) fonksiyonu yaz: malloc(n * sizeof(int)) ile dizi ayır, for ile her elemana i * i ata, diziyi döndür. main içinde int *a = make_array(3); çağır. printf("iz: dizi oluşturuldu\n"); yazdır. for ile toplamı hesapla ve printf("%d\n", sum); yazdır. free(a); ile belleği iade et. printf("iz: bellek serbest bırakıldı\n"); yazdır.

Başlangıç kodu

main.c
#include <stdio.h>
#include <stdlib.h>

// make_array fonksiyonunu yaz: malloc ile dizi ayır, kareleri doldur
// main'de make_array(3) çağır
// "iz: dizi oluşturuldu" yazdır
// toplamı hesapla ve yazdır
// belleği serbest bırak
// "iz: bellek serbest bırakıldı" yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <stdlib.h>

int *make_array(int n) {
    int *a = malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        a[i] = i * i;
    }
    return a;
}

int main(void) {
    int *a = make_array(3);
    printf("iz: dizi oluşturuldu\n");
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        sum += a[i];
    }
    printf("%d\n", sum);
    free(a);
    printf("iz: bellek serbest bırakıldı\n");
    return 0;
}

Beklenen çıktı

iz: dizi oluşturuldu
5
iz: bellek serbest bırakıldı

Özet

Bu grupta hata ayıklamayı derinlemesine öğrendin. gdb temelleri, breakpoint, watch/print, valgrind ve printf debugging kavramlarını gördün. Bunları birleştirerek izlemeli ve sızıntısız bir program yazdın.

Hata ayıklama, yazılım geliştirmenin ayrılmaz bir parçasıdır. gdb adım adım izleme, valgrind bellek denetimi ve printf hızlı izleme; her birinin yerinde kullanımı vardır. Sonraki gruplarda bitsel işlemler ve typedef gibi ileri konulara geçeceksin. Sağlam hata ayıklama alışkanlığı, ileri seviye kodu güvenle yazmanın temelidir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi araç bellek sızıntısını bulur?

  • gdb
  • valgrind Doğru cevap
  • make
  • gcc

Açıklama: valgrind çalışma anında bellek sızıntılarını denetler.

2 Hata ayıklama araçlarını eşle

Kavram Anlamı
gdb Adım adım izleme
valgrind Bellek denetimi
printf Geçici iz çıktısı
-g Hata ayıklama bilgisi

Orta seviye bölümündeki tüm dersler