Debugging (Hata Ayıklama)

Bu makale http://www.hacknot.info sitesindeki Debugging 101 konulu yazı çevirilerek hazırlanmıştır.

Geçenlerde bir meslektaşımla beraber, yazmış olduğu bir kod parçasındaki küçük bir hatayı(bug) çözmek için beraber çalışıyorduk. Hata bir exception oluşturmuştu ve neyden kaynakladığı konusunda ikimizin de herhangi bir fikri yoktu. Daha da kötüsü hata kullanmakta olduğumuz açık kaynak (open-source) bir kütüphaneden(library) kaynaklanmaktaydı. Bir açık kaynak klasiği olarak dökümantasyon azdı ve problemi teşhis etmekte bize fazla bir yardım sağlamıyordu. Görünen oydu ki bu kütüphanenin kaynak kodunu indirecek ve içine girecektik.

Kaynak kodu indirmeden önceki son çare olarak hatanın kendisini webde aramayı önerdim, hata metninin son bir kaç satırını arama moturununun kutucuğuna yapıştırarak.. Arama sonucunda bir başkasınında online forumlarda "aşağıdaki hata ile karşılaştım, ne yapmam gerekiyor" türünden bir mesaj ve akabinde hata mesajının tamamı yada bir kısmının yer aldığı sayfalar görmeyi umuyordum. Belki forumdaki bu mesaja verilen cevaplar bize de yardım edebilirdi.

Meslektaşım yazılım geliştirmede epeyce yeni biriydi ve fikrim karşısında şaşırarak, bunu denemeyi hiç düşünemeyeceği yorumunu yaptı. Onun bu cevabı beni hata ayıklama yöntemleri genel olarak düşünmeye itti.

Bilgisayar bilimleri üzerine aldığım eğitimlerde, nasıl hata ayıklanması ile ilgili verilen herhangi bir eğitim yada konunun değinildiği bir ders hatırlamıyorum. Bu arada belirteyim ki bu derslerde aldığım çoğu şeyi hatırlamıyorum, belki bu konuya da değinildi ve ben unuttum. Yine de hata ayıklama ihmal edilen bir konu, neden acaba?

Ortalama bir programcının zamanının ne kadarını hangi oranda hata ayıklamaya harcadığını düşündüğümüzde, sonuç özellikle dikkat çekici. Kendim için ölçmedim fakat 1/3 yada günün çoğu hata ayıklamayla geçiyorsa hiç şaşırmam. Bir programı debug etmeyi metodsal bir şekilde hiç görmemiş olmamız oldukça tuhaftır. Hata ayıklama konusunda tüm bildiğim tecrübelerimden, deneme-yanılmalardan ve başkalarından görerek elde ettiğim şeylerdir. Tecrübelerime dayanarak söylüyorum ki, hata ayıklama teknikleri tüm geliştiriciler için hayati bir ilgi alanı oluşturmalıdır. Hala bazı programcılar bu konuda konuşmak noktasında çekimser görünmekteler.

Bunun ana nedeninin gurur olduğunu sanıyorum. Hatasız kod yazmak çoğu programcı için iftihar meselesi. Hata ayıklama teknikleri hakkındaki bilgisini sergilemek kusur yada zayıflık itiraf etmek gibi. Fakat bu konuyu ihmal ederek insanın kaçınılmaz zayıflığıyla mücadele etmenin yöntemlerini öğrenmenin önemli imkanlarını kaybederiz, dolayısıyla yaptığımız işin kalitesini iyileştirmeyi.

Bunlardan dolayı hata ayıklama konusunda edindiğim teknikleri listeleme görevini üzerime aldım. Çoğu için bunlar eski ve basit olabilir. Çok tecrübeli olanlar için bile bu denenmiş ve doğru teknikleri hatırlamak iyi olacaktır. Umarım bunlar sinir bozucu hataların aldığı zamanlarınızı size kazandırır.

Konuyu 6 ana başlık altında ele aldık.

Debugging (Hata Ayıklama) (şuan burdasınız)

Genel Prensipler

Teknik Metodlar

Psikolojik Metodlar

Hata Önleme Yöntemleri

Sonuç

Yorum yapabilirsiniz

Adınız  


E-Posta  


Yorumunuz