Bilgisayar Bilimleri

Bug Nedir? Debugging Nasıl Yapılır? [Rehber]

Bug Nedir: Bilgisayar programlarında ve bilgisayar sistemlerinde beklenmeyen sonuçları, hataları, sistemin beklenmeyen şekilde çalışmasına sebep olan durumları tanımlamak için kullanılan kavramdır.

Yaptığınız program görünürde çalışıyor ama aslında kendisinden istenilen işi tam olarak yapmıyorsa ortada bir bug var demektir. Bu yazıda sırasıyla bug kavramı, hata ayıklama yöntemleri ve debugging kavramının tarihçesine değineceğiz. Basit bir bug örneği ile konuya girelim:

Örnek: Bir hesap makinesinde 4 ile 1’i topladığımızda program çalışıyor fakat sonuç olarak 5 değil, 41 sonucunu alıyorsak ortada bir değişken tipleri ile alakalı bir bug var demektir.

Bug Nedir? Yaratıcı Bug Örnekleri
Bug Nedir? Yaratıcı Bug Örnekleri
Görsel: Oyunlarda Bug Örneği
Görsel: Oyunlarda Bug Örneği

Neden Programlarda Bug Olur?
💡 Program geliştiricilerinin yanlış algoritmalar dizayn etmesi (%90)
💡 Derleyicilerin kaynak kodu derlerken hatalı kodlar üretmesi (%10)

“Bilgisayarlar komutları takip etmekte başarılıdır, aklınızı okumakta değil.” (Donald Knuth)

Programlarda oluşan, kişiyi onları ararken adeta kanser eden bu yazılım hatalarını bulma ve onları düzeltme işlemine hata ayıklama (debugging) denir. Hata ayıklama yöntemleri ise şunlardır:

Hata Ayıklama (Debugging) Yöntemleri
Hata Ayıklama (Debugging) Yöntemleri

Hata Ayıklama (Debugging) Yöntemleri

1- Kayıt (Log) Dosyalarını Kullanmak

Log Nedir: Program kullanılırken yapılan tüm işlemlerin zamanıyla beraber teker teker not edildiği ve saklandığı dosyalara denir. Bu dosyalar siber güvenlik, program geliştirme, hata ayıklama gibi çeşitli amaçla kullanılırlar.

✅ Log dosyalarında yapılan tüm işlemler adım adım takip edilerek, programın hangi noktada, hangi sebepten ötürü raydan çıktığı tespit edilip kolaylıkla düzeltilebilir.
✅ Logları kullanarak hata ayıklama yapma yönteminin kötü yanı ciddi zaman ve emek istemesidir. Mesela şöyle bir uygulama yapabilirsiniz:

Her Programlama Diline Uyarlanabilir, Print Fonksiyonu ile Debugging Örneği
Her Programlama Diline Uyarlanabilir, Print Fonksiyonu ile Debugging Örneği

2- Kesme Noktaları (Breakpoints) Kullanmak

Breakpoint Nedir: Program geliştirme sürecinde hata ayıklama amacıyla programı kasıtlı olarak durdurma noktalarına denir.

✅ Durdurma noktaları ile program yürütülürken adım adım programın doğru çalışıp çalışmadığı test edilebilir, program hakkında detaylı bilgi edinilebilir.
✅ Satır satır kodun işleyişini gösteren siteler, kodunuzu analiz ederek otomatik kesme noktaları oluşturma işlevi görürler. Bu siteleri kullanmak önemli ölçüde vakit tasarrufu sağlarlar.
✅ Kesme noktaları sayesinde potansiyel bug niteliği taşıyan uyarıları da kolaylıkla giderebilirsiniz.

Uyarılar Potansiyel Bug Demektir, Bu Sebeple Debugging Yapmak Gerekir
Uyarılar Potansiyel Bug Demektir, Bu Sebeple Debugging Yapmak Gerekir

3- Çift Programlama Yapmak

Pair Programming Nedir: Çift programlama, iki programcının birlikte çalıştığı çevik bir yazılım geliştirme tekniğidir.

✅ Programcılardan birisi kod yazarken, diğeri gözlemci veya gezgin rolünde her kod satırını yazıldığı gibi inceler. İki programcı rolleri sık sık değiştirir. Bu sayede daha güvenli ve daha verimli yazılımlar daha hızlı bir şekilde geliştirilir.
✅ Çift programlama yapmak, hepimizin bir dönem düştüğü şu troll duruma düşmenizin önüne geçer:

Sizde Kusursuz Çalışan Programı Başkaları Test Ettiğinde Sorun Olabileceği İçin Test ve Debugging Aşaması Son Derece Önemlidir
Sizde Kusursuz Çalışan Programı Başkaları Test Ettiğinde Sorun Olabileceği İçin Test ve Debugging Aşaması Son Derece Önemlidir

4- Hazır Kod Desteği Almak

Hazır Kod Desteği: Arama motorlarını, video platformlarını veyahut sadece yazılım geliştiricilerinin toplandığı özel platformları araştırarak oralarda benzer konularda üretilen içeriklere göz atarak hazır kod desteği alabilirsiniz.

Program Geliştiricilerinin Destek Aldığı Platformlar
Program Geliştiricilerinin Destek Aldığı Platformlar

✅ Stackoverflow gibi sadece bilgisayar alanında iş yapan insanların toplandığı platformlarda çok yüksek bir ihtimalle doğrudan sizinle aynı hataya düşen insanların açtıkları konuları ve onlara verilen cevapları inceleyebilirsiniz. Fakat bu platformun İngilizce olduğunu belirtmemiz gerekir. Bakın şu görselde bu platformun önemi ne de güzel ifade edilmiş:

Programlama Yaparken Karşılaştığınız Hatalarda Stackoverflow Kurtarıcınız Olacaktır
Programlama Yaparken Karşılaştığınız Hatalarda Stackoverflow Kurtarıcınız Olacaktır

5- Şeytanla Anlaşma Yapmak

Parası karşılığında işin uzmanı birisine debugging yaptırmak ve hatta programı sıfırdan yazdırmak gibi etik olmayan ve kişinin kendi emeğini bünyesinde barındırmayan uygulamalar bu sınıfa girer.

Bu tarz uygulamalar hem gereksiz kaynak harcamasına yol açar, hem de kişiyi tembelliğe sevk ettiği için gelişimin önündeki en büyük engellerdir.

Debugging Nedir? Nasıl Yapılır?
Debugging Nedir? Nasıl Yapılır?

6- Yeniden Pazarlama Yapmak

Rebranding Nedir: Yeniden pazarlama yöntemi programdaki bug, hata ve eksikliklerin süslenip püslenip, yeni eklemeler yapılarak adeta işe yarayan yeni bir özellik haline getirilerek insanlara sunulmasıdır.

✅ Unutmayınız ki, yeniden pazarlama yapmak başvurmamız gereken son çaredir. Zira her şeye yeniden pazarlama yapmak kolaycılığa kaçmak olur.
✅ Programlamadaki yeniden pazarlama kavramı, yeniden pazarlama reklamlarından esinlenilerek oluşturulmuş bir yöntemdir. Bu konuda detaylı bilgiye “Yeniden Pazarlama (Remarketing) Nedir? Nasıl Yapılır?” adlı yazımızda ulaşabilirsiniz. Fakat biz yine de şöyle bir örnek verebiliriz:

Debugging'de Son Çare Yeniden Pazarlama Yapmaktır
Debugging’de Son Çare Yeniden Pazarlama Yapmaktır

Özel Hata Ayıklama (Debugging) Teknikleri

▶️ Hata Ayıklama Araçları: Hata ayıklaması (debugging) yaparken şu araçları kullanabilirsiniz:
— Hata mesajı (error message)
— Yazdırma komutu (print)
— Yorumlayıcı (interpreter)
— Satır satır kodun işleyişini gösteren siteler
— Hata ayıklama platformları (debugger)
— Beyin ve analiz gücü

Debugging Sabır ve Çok Yönlü Düşünme Becerisi Gerektirir
Debugging Sabır ve Çok Yönlü Düşünme Becerisi Gerektirir

▶️ Böl ve Yönet: Programın algoritmasını analiz edin ve onu daha bölebildiğiniz kadar küçük ve anlamlı parçalara bölün. Daha sonra programın çalışma sırasına göre bu parçaları incelemeye başlayın.
(Ayrıca Bakınız: Algoritma Nedir? – Algoritma Örnekleri)

▶️ Sakin Olmanın Önemi: Buglar ve hatalar kişiyi her ne kadar kanser etse de bunlar gerçeğin ta kendisi ve kendimizi geliştirmemiz konusunda oldukça önemli adımlardır. Bu sebeple boş yere kafayı yemek yerine işimize odaklanmalıyız. Zira eninde sonunda yüksek ihtimalle şu döngüyü tamamlayacaksınız:
(Ayrıca Bakınız: Kendini Geliştirme Yöntemleri [Rehber])

Hata Ayıklama (Debugging) Sürecinin 5 Aşaması
Hata Ayıklama (Debugging) Sürecinin 5 Aşaması

▶️ Dinamik Düşünmek: Hata olduğunu düşündüğünüz adıma gelince eğer ne yaparsanız yapın orada hata bulamadı iseniz, o adımda takılı kalmayın ve daha geri adımları inceleyerek büyük resme odaklanmaya çalışın.

▶️ Uyku Düzeni: İlginçtir, gece yattığınızda aklınıza bugların çözümü gelebilir. Böyle bir durumda kalkıp bilgisayar başına geçmek yerine, çözümü bir yere not edin. Uykunuz biyolojik saatiniz ve zihin sağlığınız için son derece önemlidir.
(Ayrıca Bakınız: Biyolojik Saat Nedir? Ne İşe Yarar?)

Hata Ayıklamanın Kötü Yönü Uyku Düzeninizi Bozma Potansiyelidir
Hata Ayıklamanın Kötü Yönü Uyku Düzeninizi Bozma Potansiyelidir

Debugging Kavramının Tarihçesi

Bug aslında Türkçe’ye çevrildiğinde böcek demektir. Böceğin ufak yapısı ve delik oyuk benzeri yerlere çabuk, görünmeden girmesi üzerine bu terim bilgisayar alanında kullanılmıştır. Bug terimi 1940’lı yıllarda ortaya çıkmış ve Grace Hopper bir böceğin, bir bilgisayarın devrelerinin yanmasına sebebiyet vermesinden dolayı bu olaya bu adı vermiştir.

Yazılım alanında da bug sorunlarının tespiti ve bu sorunların giderilmesi aynı sebepten ötürü oldukça önemlidir. Çünkü bug sorunları güvenlik açığına sebebiyet vermektedir. Ayrıca düzenli olarak kod hatası yapmayan ya tembeldir, ya da hata yapmayı küçümsüyordur. Ama unutmayınız ki tembellik ve kibir gelişmenin önündeki en büyük engellerdir.

Bug Çözmek Her Ne Kadar İnce İşçilik Gerektirse ve Zor Olsa Da Test Aşamasında Bugun Çözüldüğünü Görmek De Bir O Kadar Zevklidir
Bug Çözmek Her Ne Kadar İnce İşçilik Gerektirse ve Zor Olsa Da Test Aşamasında Bugun Çözüldüğünü Görmek De Bir O Kadar Zevklidir
Unutmayınız Ki Hata Ayıklamada Son Çare Yeniden Pazarlamadır
Unutmayınız Ki Hata Ayıklamada Son Çare Yeniden Pazarlamadır
Bilgisayar Mühendisliği Alanının En Zor Yanı Kod Hatası Ayıklamaktır
Bilgisayar Mühendisliği Alanının En Zor Yanı Kod Hatası Ayıklamaktır

…https://www.niobehosting.com/blog/bug-ve-debug-nedir/

MrKaptanTR

Bilgisayar mühendisiyim ve boş zamanlarımda kurucusu olduğum bu platformda yazarlık yapıyorum. Özellikle yazılım ve profesyonel içerik üreticiliği alanlarında çalışıyorum. Spor yapmaktan ve gizemli konuları araştırmaktan keyif alıyorum.

2 Yorum

  1. Bug nedir sorusunu nokta atışı bug örnekleri ile açıklamışsınız. Ayrıca debugging nedir ve debugging nasıl yapılır sorularını da gerçekten işin püf noktası olarak tabir edebileceğimiz tekniklerini anlatarak cevaplamışsınız, bu konuda harbiden efsane bir içerik olmuş 🙂

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu