C
Özet - Hata ayıklama
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.
Örnek çözümü göster
#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;
}
Ö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.
Kendini test et
-
Hangi araç bellek sızıntısını bulur?
Cevabı göster
valgrind — valgrind çalışma anında bellek sızıntılarını denetler.
-
Hata ayıklama araçlarını eşle
- gdb
- Adım adım izleme
- valgrind
- Bellek denetimi
- printf
- Geçici iz çıktısı
- -g
- Hata ayıklama bilgisi
Sıradaki ders: Bit maskeleme