Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
C:\Dir1\symbols\dllC:\Dir1\dllC:\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,..\exeveya..\syseklenmiş ş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_PATHeklenerek 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_PATHkullanmak 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+Stuşuna basarak yolu görüntüleyebilir, ayarlayabilir, değiştirebilir veya ekleyebilirsiniz.
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
srv*dizesiSembol 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*symbolstoredizesiSembol yolunuzda
srv*symbolstoredizesini 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/symbolssrv*localsymbolcache*symbolstoredizesiSembol yolunuzda
srv*localcache*symbolstoredizesini 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/symbolsvec:\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,/f seçeneğiyle birlikte kullanarak da simge yüklemeyi zorlayabilirsiniz.
Azure DevOps Services Bileşenler
Azure DevOps Services
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ı: