Ö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
#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
#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 |