Bilgisayar Mühendisliği

Debugging Nedir? 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

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.

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

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 Yazılımı Başkaları Test Ettiğinde
Sizde Kusursuz Çalışan Yazılımı Başkaları Test Ettiğinde

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.

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 Nedir? Nasıl Yapılır?” adlı yazımızda ulaşabilirsiniz.

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

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

▶️ 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.
(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ı

▶️ 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)

▶️ 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.

Technogezgin.com Bilgi
Debugging (hata ayıklama) nedir, nasıl yapılır” konulu yazımız hakkında eklemek istediklerinizi, sorularınızı ve (eğer varsa) yazıdaki yanlışları yorumlarda belirtebilirsiniz.

Bilgi güçtür, paylaştıkça büyür. Bu sebeple bu yazıyı da; yazının altındaki (logolu) paylaşım tuşlarını kullanarak gönül rahatlığı ile paylaşarak bize büyük bir iyilik yapabilirsiniz.

Ana Sayfa: 
https://www.technogezgin.com/
Hayata Dair Özgün ve Kaliteli Yazılarımız: 
https://www.technogezgin.com/blog/

-Reklam-

MrKaptainTR

Merhabalar. Ben bu internet sitesinin sahibiyim. Aynı zamanda Hacettepe Üniversitesi'nde bilgisayar mühendisliği okuyorum. Bu sitede de; ufkunuzu açacak, bilgi hazinenizi katlayacak, bakış açınızı adeta uçuracak, “Vay be, adamlar bunu da mı yapmış?” dedirtecek cinsten içerikler üretmeye çalışıyorum.

Bir Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı