Home Türkçe Sembol Dosyalarımızı Sevelim! Koruyalım!

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

by Fatih Boy
0 comment

   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.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi