Sembol Dosyalarımızı Sevelim! Koruyalım!

   Yazılım geliştirme sürecinin en baş ağrıtıcı yanıdır belkide hata ayıklama süreci. Elimden geldiğince bu süreçte sizlere önemli bulduğum yöntemleri/ipuçlarını paylaştığım Hata Ayıklama makale serisine şöyle bir geri dönüp baktığımda değinmediğim önemli bir konu olduğunu farkettim; sembol dosyaları.

   Pek çoklarının Visual Studio’da varsayılan olarak bir programı debug modunda derlediğinde çıktı dizinine kopyalanan pdb uzantılı dosyalar olduğu ve bir uygulamada debug işlemine yardımcı olduğu dışında pek de fazla bilgi sahibi olmadığı sembol dosyaları, aslında en az kaynak kodu kadar değerlidir. Sizlere daha önceden temel düzeyde kullanımını paylaştığım WinDBG uygulamasını ele alalım. Her ne kadar oldukça faydalı bir debug aracı olsa da, üzerinde inceleme yaptığımız uygulama sürümüne ait sembol dosyalarının bulunmaması durumunda WinDBG bize her zaman için nokta atışı olarak hatanın kaynağını veremeyecektir. Uygulamanın kaynak kodları elimizde olsa dahi aktif olarak kaynak kodun hangi dosyası ve satırında işlem yaptığımızı, muhatap olduğumuz değişkenlerin adının ne olduğu bilmeden karanlıkta el yordamıyla yolumuzu bulmaya çalışmaktan öteye gidemeyeceğimiz açıktır. Yıllardır içinde bulunduğum yazılım sektöründe defalarca ilgili sürüme ait sembol dosyalarının bulunmayışı kaynaklı olarak sıkıntılar yaşamış ekiplere elimden geldiğince destek vermeye çalıştım, bu dosyaların eksikliğinin kaybettirdiği zamanı ve maliyeti rahatlıkla gözlemleyebildim.

    PDB dosyalarının önemini kavradıktan sonra akıllara bu dosyaların nasıl saklanacağı sorusu geliyor. Akla gelebilecek belki de en basit çözüm yerel makinede klasörler altında gruplamak, peki bu aslında gerçekten de bir çözüm mü? Büyük bir ekip ile çalışmıyorsanız ya da sadece kendi makinenizde derleme yapıyorsanız (private build) ve biraz da azimli iseniz; belki… Ama iş büyük bir ekibin parçası olmak ve ortak bir build makinesi üzerinde derlemeye yapmaya (public build) gelirse kesinlikle hayır..

   Hayır; çünkü öncelikli olarak yönetilmesi neredeyse imkansız olacaktır. Hangi sürüme ait PDB dosyası nerede? ya da bu sürümün kaynak kodu source control sunucumda hangi versiyonda tutuluyor? Source control’deki bu sürüme nasıl ulaşabilirim? Tüm bunların da ötesinde, bu yöntemin herhangi bir debug aracı ile entegrasyon şansı olmayacaktır. Alternatif (ve daha profesyonel bir yaklaşım) olarak Sembol Sunucusu kullanılabilir.

   Her bir yazılım evinin en az kaynak kodu sunucusu kadar vazgeçilmez bir parçası olması gereken Sembol sunucusu her public build sonucunda oluşan PDB ve binary’leri saklayacaktır. Üstelik Visual Studio, WinDBG gibi modern debuggerların da entegrasyon sunması ve bir sembol sunucusundan PDB ve binary’leri nasıl çekeceğini bilmesi zamana karşı yarışımızda bizlere önemli bir avantaj sağlamakta.

   Sembol sunucularının bizlere sağladığı indeksleme hizmeti sayesinde her bir PDB dosyası sembol sunucuna atılırken kaynak kodu sunucunda bulunan ilgili kaynak koduna nasıl ulaşılabileceğine dair gerekli komutlar da PDB dosyaları ile birlikte saklanmaktadır. Bu sayede public build ile sembol sunucusuna atılan bir PDB dosyası üzerinden debug işlemini gerçekleştirirken hiç bir zaman için kodun ilgili sürümüne nasıl ulaşacağım endişesi taşımazsınız.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

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