Aracılığıyla paylaş


Windows hata ayıklayıcıları için sembol yolu

Sembol yolu, WinDbg, KD, CDB ve NTST gibi Windows hata ayıklayıcılarının sembol dosyalarını arayabileceği konumları belirtir.

Hızlı başlangıç:.symfix Komutunu kullanarak Microsoft'un ortak sembol sunucusuna varsayılan bir yol ayarlayın; bu çoğu hata ayıklama senaryosunda iyi çalışır.

Verimli hata ayıklamayı etkinleştirmek için sembol yolunu doğru yapılandırın; hata ayıklayıcılar daha sonra kod yürütmeyi analiz etmek için gereken sembol dosyalarını otomatik olarak bulabilir ve yükleyebilir. Bu kılavuzda sembol yollarını ayarlama, Microsoft'un sembol sunucusunu kullanma, simgeleri yerel olarak önbelleğe alma ve yaygın sorunları giderme işlemleri gösterilir. Simgeler ve sembol dosyaları hakkında daha fazla bilgi için bkz. Simgeler.

Microsoft Visual Studio dahil olmak üzere bazı derleyiciler, simge dosyalarını ikili dosyalarla aynı dizine koyar. Sembol dosyaları ve işaretli ikili dosyalar, hata ayıklayıcının sembol dosyalarını otomatik olarak bulmasını sağlayan yol ve dosya adı bilgilerini içerir. Yürütülebilir dosyayı oluşturduğunuz bilgisayarda kullanıcı modu işleminde hata ayıklarsanız ve sembol dosyaları özgün konumlarındaysa, hata ayıklayıcı siz simge yolunu ayarlamadan sembol dosyalarını bulabilir.

Diğer çoğu durumda, simge dosyasının konumlarına işaret etmek için sembol yolunu ayarlamanız gerekir.

Bahşiş

.symfix kullanarak birçok durumda iyi çalışan genel Microsoft ortak sembol sunucusuna varsayılan bir yol ayarlayın.

Sembol yolu sentaksı

Hata ayıklayıcının sembol yolu, noktalı virgülle ayrılmış birden çok dizin yolundan oluşan bir dizedir. Örneğin, C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.

Göreli yollar desteklenir. Ancak, hata ayıklayıcıyı her zaman aynı dizinden başlatmadığınız sürece, her yolun önüne bir sürücü harfi veya ağ paylaşımı eklemeniz gerekir. Ağ paylaşımları da desteklenir.

Sembol yolundaki her dizin için hata ayıklayıcı üç dizin içinde araştırma yapar. Örneğin, sembol yolu içeriyorsa C:\Dir1 ve hata ayıklayıcı bir DLL'nin sembol bilgilerini arıyorsa, hata ayıklayıcısı şu sırada arar:

  1. C:\Dir1\symbols\dll
  2. C:\Dir1\dll
  3. C:\Dir1

Hata ayıklayıcı, sembol yolundaki her dizin için bu işlemi yineler.

Son geri dönüş konumları:

  • Geçerli dizin
  • Geçerli dizin, hata ayıklanan ikili türüne bağlı olarak, ..\dll, ..\exe veya ..\sys eklenmiş şekilde.

Sembol dosyalarının tarih ve saat damgaları vardır. Hata ayıklayıcı her zaman hata ayıklarken ikili dosyalardaki zaman damgasıyla eşleşen simgeleri arar. Hata ayıklayıcısının bu sırada ilk olarak bulduğu yanlış simgeleri kullanma konusunda endişelenmeniz gerekmez. Sembol dosyaları kullanılamadığında verilen yanıtlar hakkında daha fazla bilgi için bkz . Eşleşen sembol adları.

Sembol yolunu ayarlamanın bir yolu, .sympath komutunugirmektir. Sembol yolunu ayarlamanın diğer yolları için bu konudaki Sembol yolunu Kontrol Etme bölümüne bakın.

Sembol yolunu denetle

Sembol yolunu denetlemek için aşağıdaki yöntemlerden birini seçin:

  • Birçok durumda iyi çalışan genel Microsoft sembol sunucusuna varsayılan bir yol ayarlamak için .symfix set symbol store path komutunu kullanın. Yerel önbellek ayarlamak için yazın .symfix C:\MyCache.

  • Yolu görüntülemek, ayarlamak, değiştirmek veya eklemek için .sympath komutunu kullanın.

  • Hata ayıklayıcıyı başlatmadan önce, yolu ayarlamak için ve ortam değişkenlerini kullanın. Sembol yolu, _NT_SYMBOL_PATHsonra _NT_ALT_SYMBOL_PATH eklenerek oluşturulur. Genellikle yolu _NT_SYMBOL_PATH üzerinden ayarlarsınız. Ancak, paylaşılan sembol dosyalarının özel sürümlerine sahip olmanız gibi özel durumlarda bu ayarları geçersiz kılmak için _NT_ALT_SYMBOL_PATH kullanmak isteyebilirsiniz. Bu ortam değişkenleri aracılığıyla geçersiz bir dizin eklemeye çalışırsanız, hata ayıklayıcı bu dizini yoksayar.

  • Hata ayıklayıcıyı başlattığınızda, yolu ayarlamak için -y komut satırı seçeneğini kullanın.

  • Yalnızca WinDbg'de, Dosya | Simge Dosya Yolu komutunu kullanın veya CTRL+S tuşuna basarak yolu görüntüleyebilir, ayarlayabilir, değiştirebilir veya ekleyebilirsiniz.

-sins komut satırı seçeneğini kullanırsanız, hata ayıklayıcı sembol yolu ortam değişkenini yoksayar.

Simgeleri yerel olarak önbelleğe alma

Hata ayıklayıcı performansını geliştirmek ve ağ trafiğini azaltmak için simgeleri yerel olarak önbelleğe almanızı öneririz. Sembolleri önbelleğe almak için, cache*; simge yolunuz içinde veya cache*localsymbolcache; ekleyin.

Dizeyi sembol yolunuza eklerseniz, hata ayıklayıcısı bu dizenin cache*; sağında görünen herhangi bir öğeden yüklemiş olduğu simgeleri yerel bilgisayardaki varsayılan sembol önbellek dizininde depolar. Örneğin, aşağıdaki komut hata ayıklayıcıya \\someshare adlı ağ paylaşımından sembolleri almalarını ve simgeleri yerel bilgisayardaki varsayılan konumda önbelleğe almalarını söyler.

.sympath cache*;\\someshare

Simge yolunuzda dizeyi eklerseniz, hata ayıklayıcısı bu dizenin cache*localsymbolcache; sağında görünen herhangi bir öğeden yüklemiş olduğu simgeleri localsymbolcache dizininde depolar .

Örneğin, aşağıdaki komut hata ayıklayıcıya \\someshare ağ paylaşımından sembolleri almasını ve simgeleri c:\MySymbols dizininde önbelleğe almasını söyler.

.sympath cache*C:\MySymbols;\\someshare

Sembol sunucusu kullanma: srv*

İnternet'e veya şirket ağına bağlıysanız, sembollere erişmenin en verimli yolu,Genel Microsoft ortak sembol sunucusu gibi bir sembol sunucusu kullanmaktır. Sembol yolunuzda aşağıdaki dizelerden birini kullanarak bir sembol sunucusu kullanabilirsiniz.

  • srv* dizesi

    Sembol yolunuzda srv* dizesini eklerseniz, hata ayıklayıcı varsayılan sembol deposundan sembolleri almak için bir sembol sunucusu kullanır. Örneğin, aşağıdaki komut hata ayıklayıcıya varsayılan sembol deposundan semboller almasını söyler. Bu simgeler yerel bilgisayarda önbelleğe alınmaz.

    .sympath srv*
    
  • srv*symbolstore dizesi

    Sembol yolunuzda srv*symbolstore dizesini eklerseniz, hata ayıklayıcı sembol deposundan sembolleri almak için bir sembol sunucusu kullanır. Örneğin, aşağıdaki komut hata ayıklayıcıya Microsoft sembol sunucusu deposundan semboller almasını söyler. Bu simgeler yerel bilgisayarda önbelleğe alınmaz.

    .sympath srv*https://msdl.microsoft.com/download/symbols
    
  • srv*localsymbolcache*symbolstore dizesi

    Sembol yolunuzda srv*localcache*symbolstore dizesini eklerseniz, hata ayıklayıcı sembol deposundan sembolleri almak için bir sembol sunucusu kullanır ve bunları localcache dizininde önbelleğe alır. Örneğin, aşağıdaki komut hata ayıklayıcıya Microsoft sembol sunucusundan semboller almalarını söyler -https://msdl.microsoft.com/download/symbols ve c:\MyServerSymbolsiçinde simgeleri önbelleğe alır.

    .sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
    

Bilgisayarınızda simgeleri el ile yerleştirdiğiniz bir dizininiz varsa, simge sunucusundan alınan simgeler için önbellek olarak bu dizini kullanmayın. Bunun yerine iki ayrı dizin kullanın. Örneğin, simgeleri el ile c:\MyRegularSymbols yerleştirebilir ve ardından c:\MyServerSymbols sunucudan alınan simgeler için önbellek olarak belirleyebilirsiniz. Aşağıdaki örnek, sembol yolunuzda her iki dizinin de nasıl belirtileceğini gösterir.

.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

Sembol sunucuları ve sembol depoları hakkında daha fazla bilgi için bkz. Özel simge depoları ve sembol sunucuları.

Önbellek* ve srv* birleştirme

Dizeyi sembol yolunuza eklerseniz, hata ayıklayıcısı bu dizenin cache*; sağında görünen herhangi bir öğeden yüklemiş olduğu simgeleri yerel bilgisayardaki varsayılan sembol önbellek dizininde depolar. Örneğin, aşağıdaki komut hata ayıklayıcıya Microsoft sembol sunucusundan semboller almalarını varsayılan sembol önbellek dizininde depolayıp önbelleğe almalarını söyler.

.sympath cache*;srv*https://msdl.microsoft.com/download/symbols

Simge yolunuzda dizeyi eklerseniz, hata ayıklayıcısı bu dizenin cache*localsymbolcache; sağında görünen herhangi bir öğeden yüklemiş olduğu simgeleri localsymbolcache dizininde depolar .

Örneğin, aşağıdaki komut hata ayıklayıcıya Microsoft sembol sunucusundan semboller alması simgeleri c:\MySymbols dizininde depolamasını ve önbelleğe almasını söyler.

.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols

Önbellek boyutunu küçültmek için AgeStore kullanma

AgeStore aracını kullanarak belirtilen tarihten eski önbelleğe alınmış dosyaları silebilir veya sonuçta elde edilen önbellek boyutunun belirtilen miktardan az olması için yeterli eski dosyayı silebilirsiniz. Aşağı akış deponuz çok büyük olursa önbellek dosyalarının bu şekilde temizlenmesi yararlı olur.

Gecikmeli simge yükleme

Hata ayıklayıcı varsayılan olarak gecikmeli simge yüklemesini kullanır. Bu tür bir yükleme, hata ayıklayıcının sembolleri ihtiyaç duyana kadar yüklemediği anlamına gelir.

Örneğin .sympath komutunu kullanarak sembol yolunu değiştirdiğinizde, hata ayıklayıcı tüm yüklenen modülleri ihracat sembolleriyle birlikte tembel bir şekilde yeniden yükler.

Hata ayıklayıcı, yeni yol artık PDB sembollerini yüklemek için kullanılan orijinal yolu içermediğinde modüllerin sembollerini tam PDB sembolleriyle tembelce yeniden yükler. Yeni yol hala PDB sembol dosyasının özgün yolunu içeriyorsa, hata ayıklayıcı bu simgeleri tembel şekilde yeniden yüklemez.

CDB ve KD'de gecikmeli simge yüklemesini,-s komut satırı seçeneğini kullanarak kapatabilirsiniz. Ayrıca ld simgeleri yükle komutunu kullanarak veya .reload module komutunu/f seçeneğiyle birlikte kullanarak da simge yüklemeyi zorlayabilirsiniz.

Azure DevOps Services Bileşenler

Azure DevOps ServicesAzure Artifacts ile bir sembol sunucusu kullanılabilir. WinDbg'de Azure Artifacts ile çalışma hakkında bilgi edinmek için bkz. WinDbg'de (Azure Artifacts)sembollerle hata ayıklama. Azure tarafından oluşturulan simgeler hakkında genel bilgi için bkz. Sembollere genel bakış (Azure Artifacts).

Sorun giderme

Simgeler yüklenirken ek ayrıntıları görüntülemek için !sym noisy veya -nWinDbg Command-Line Seçenek kullanın. Ek sorun giderme stratejileri için bkz. Sembolleri Doğrulama.

Sonraki Adımlar

Sembol yolunuzu yapılandırdığınıza göre, simgelerin doğru yüklendiğini doğrulamayı ve yaygın sorunları gidermeyi öğrenin:

İlgili görevler:

Komut referansı: