PDB dosyası ne için?
PDB dosyaları: Her geliştiricinin bilmesi gerekenler
PDB senaryosuna örnek:
PDB dosyası nedir?
Çoğu geliştirici PDB dosyalarının yazılım hata ayıklama konusunda yardımcı olduğunu bilmelidir. Ama tam olarak nasıl çalıştığını bilmiyor olabiliriz. Bu makale, PDB dosyalarının depolanması ve içeriğini açıklar. Ayrıca, hata ayıklayıcının binaya karşılık gelen PDB dosyasını ve iki ayıklayıcıya karşılık gelen kaynak kod dosyasını nasıl bulduğunu da açıklar. Bu makale tüm Yerel ve Yönetilen geliştiriciler içindir.
Başlamadan önce iki terim tanımlayalım: özel derleme, geliştiricinin kendi makinesinde üretilen bir deri anlamına gelir; Genel derleme, yani kamuya açık bir yapım makinesinde oluşturulan bir derleme. Özel derleme nispeten basit, çünkü PDB ve binay aynı yerde ve genellikle sorunlarımız kamu sürümüyle ilgilidir.
Tüm geliştiricilerin bilmesi gereken en önemli şey, "PDB dosyaları kaynak kodu kadar önemlidir" olması, onsuz hata ayıklaması bile mümkün değil. Genel derleme için, sembol sunucusunun tüm PDB'leri depolaması gerekir ve kullanıcı hata bildirdiğinde, hata ayıklayıcı otomatik olarak ilgili PDB dosyasını binayda bulabilir ve hem Visual Studio hem de Windbg sembol sunucusuna nasıl erişileceğini bilir. PDB ve binay sembol sunucusuna kaydetmeden önce, PDB çalıştırmasını kaynak indeksiyle de belirtmeniz gerekir; bu da PDB ile kaynağı ilişkilendirmek anlamına gelir.
Sonraki kısım, Sembol Sunucusu ve Kaynak Sunucu İndeksleme'nin zaten kurulmuş olduğunu varsayar. TFS2010 yeni bir yapı için kaynak indeksleme ve sembol sunucusu kopyalaması kadar basit şekilde yapılabilir.
2. PDB dosyasının içeriği
PDB'nin içeriğini resmi olarak başlatan PDB, kamuya açık bir dosya formatı değildir, ancak Microsoft, PDB'den veri almak için bir API sağlar.
Yerel C++ PDB aşağıdaki bilgileri içerir: * kamu, özel ve statik fonksiyon adresleri; * Küresel değişkenin adı ve adresi; * Yığın üzerindeki parametre ve yerel değişken isimleri ile ofsetler; * sınıf, yapı ve veri tipi tanımları; * x86'da yerel yığını dolaşmak için Frame Pointer Eksikliği verileri; * Kaynak kod dosyasındaki isim ve satır sayısı;
.NET PDB yalnızca 2 bilgi parçası içerir: * Kaynak kod dosya adı ve satır sayısı; * ve yerel değişkenin adı; * Diğer tüm veriler zaten . NET Meta Verileri;
|