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.
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
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:
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.
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:
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.
✅ 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ş:
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.
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:
Ö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ü
▶️ 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])
▶️ 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?)
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.
➽ …https://www.niobehosting.com/blog/bug-ve-debug-nedir/
Eğlenceli ve pratiğe yönelik bir yazı olmuş, bilgilendirme için teşekkürler
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ş 🙂