Aracılığıyla paylaş


SymSrv kullanma

SymSrv, merkezi simge depolarından sembol dosyaları teslim eder. Bu depolar, herhangi bir sayıda program veya işletim sistemine karşılık gelen herhangi bir sayıda sembol dosyası içerebilir. Depolar, minidump dosyalarında hata ayıklama yaparken özellikle yararlı olan ikili dosyalar da içerebilir.

Depolar gerçek simgeyi ve ikili dosyaları içerebilir veya yalnızca sembol dosyalarının işaretçilerini içerebilir. Depolama alanı işaretçi içeriyorsa, SymSrv gerçek dosyaları doğrudan kaynaklarından alır.

SymSrv, büyük bir simge depolarını özel bir hata ayıklama görevi için uygun olan daha küçük bir alt kümeye de ayırabilir.

Son olarak SymSrv, işletim sistemi tarafından sağlanan oturum açma bilgilerini kullanarak bir HTTP veya HTTPS kaynağından sembol dosyaları alabilir. SymSrv, akıllı kartlarla, sertifikalarla ve normal oturum açma bilgileriyle parolalarla korunan HTTPS sitelerini destekler.

Sembol Yolunu Ayarlama

Sembol Yolları'nda açıklandığı gibi, sembol yolu (_NT_SYMBOL_PATH ortam değişkeni) noktalı virgülle ayrılmış birkaç yol öğesinden oluşabilir. Bu yol öğelerinden biri veya daha fazlası "srv*" metniyle başlıyorsa, öğe bir sembol sunucusudur ve sembol dosyalarını bulmak için SymSrv'yi kullanır.

Not

"srv*" metni belirtilmemişse ancak gerçek yol öğesi bir sembol sunucusu deposuysa, simge işleyicisi "srv*" belirtilmiş gibi davranır. Sembol işleyicisi, belirtilen yolun kök dizininde "pingme.txt" adlı bir dosyanın varlığını arayarak bu belirlemeyi yapar.

 

Sembol yolları noktalı virgülle ayrılmış sembol yolu öğelerinden oluşurken, sembol sunucuları da yıldız işaretiyle ayrılmış sembol deposu öğelerinden oluşur. "srv*" ön ekinin ardından en fazla 10 sembol deposu olabilir. Listenin solunda listelenen depolar aşağı akış depoları olarak adlandırılırken, sağ taraftaki depolar yukarı akış depoları olarak adlandırılır.

srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*

Yola yalnızca bir sembol deposu öğesi dahil edilirse, SymSrv istenen herhangi bir dosyayı doğrudan bu depodan kullanmayı dener.

Yolda iki simge deposu varsa, SymSrv en soldaki simge deposunda sembol dosyasını arar. Dosya oradaysa kullanılır. Orada değilse, SymSrv hemen sağındaki sembol deposunda arar. Dosya oradaysa, sol depoya kopyalanır ve oradan açılır.

İkiden fazla depo varsa, dosya bulunana veya listede başka depo kalmayıncaya kadar bu davranış sağa doğru devam eder.

Dosya, sadece en soldaki depodan açılır, başka bir depodan asla açılmaz. Dosya zincirde başka bir yerde bulunursa, dosyanın solundaki her depoya kopyalanır. Bu kopyalama işlemi "basamaklı" olarak adlandırılır ve bu belgenin ilerleyen bölümlerinde açıklanacak bazı avantajlar sağlar.

Sembol Deposu Türleri

Aşağıdaki tabloda desteklenen sembol deposu türlerinin örnekleri görüntülenir.

Sembol deposu türü Açıklama
\\server\share Uzak sunucudaki bir paylaşımın tam nitelikli UNC yolu.
c:\LocalCache İstemci bilgisayar üzerinde bir dizinin yolu.
https://InternetSite Simgeleri barındıran bir web sitesinin URL'si. Listedeki en sağdaki depo olmalı ve listedeki tek depo olmamalıdır.
https://SecureInternetSite Simgeleri barındıran güvenli bir web sitesinin URL'si. Bu, parolaları, Windows oturum açma kimlik bilgilerini, sertifikaları ve akıllı kartları destekleyebilir. Listedeki en sağdaki depo olmalı ve listedeki tek depo olmamalıdır.
<boş> İki yıldız işareti arasında metin yoksa, bu varsayılan aşağı akış deposunubelirtir. Konum, SymSetHomeDirectoryçağrılarak ayarlanır. Varsayılan değer, çağıran uygulamanın program dizininin hemen altında "sym" adlı bir dizindir. Buna bazen varsayılan yerel önbellekdenir.

 

HTTP tabanlı simge deposuna yazılamadığından, bu depo listede en sağdaki depo olmalıdır. HTTP tabanlı bir sembol deposu, mağaza listesinin ortasında veya solunda bulunuyorsa, bulunan dosyaların kopyalanması mümkün olmaz ve zincir bozulur. Ayrıca, simge işleyicisi bir web sitesinden dosya açamadığından, HTTP tabanlı depo listede en soldaki veya yalnızca depo olmamalıdır. SymSrv'ye bu sembol yolu sunulursa, varsayılan aşağı akış deposunun sembol yolunda gösterilip gösterilmediğine bakılmaksızın dosyayı varsayılan aşağı akış deposuna kopyalayıp oradan açarak kurtarmayı dener.

Örnekler

SymSrv'yi \\mybuilds\mysymbols üzerinde bir sembol deposuyla kullanmak için aşağıdaki sembol yolunu ayarlayın:

set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

Hata ayıklayıcının \\mybuilds\mysymbols üzerindeki bir sembol deposundaki sembol dosyalarını yerel dizininize c:\localsymbols kopyalayacak şekilde sembol yolunu ayarlamak için şunu kullanın:

set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols

Hata ayıklayıcının \\mybuilds\mysymbols üzerindeki bir sembol deposundaki sembol dosyalarını varsayılan aşağı akış deposuna (genellikle c:\debuggers\sym) kopyalayacak şekilde sembol yolunu ayarlamak için şunları kullanın:

_NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

Basamaklı depo kullanmak için aşağıdaki sembol yolunu ayarlayın:

set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer

Bu örnekte, SymSrv dosyayı ilk olarak c:\localsymbols içinde arar. Orada bulunursa dosyanın yolunu döndürür. Aksi takdirde, SymSrv dosyayı \\NearbyServer\store konumunda arar. Orada bulunursa, SymSrv dosyayı c:\localsymbols dosyasına kopyalar ve dosyanın yolunu döndürür; bulunamazsa, SymSrv dosyayı https://DistantServeriçinde arar ve orada bulunursa, SymSrv dosyayı \\NearbyServer\store'a, ardından c:\localsymbols dosyasına kopyalar.

Bu son örnek, sembol yolunun özenli tasarımının sembollerin indirilmesini iyileştirmek için nasıl kullanılabileceğini gösterir. Bir grup hata ayıklayıcı içeren bir iş siteniz varsa ve hepsinin uzak bir konumdan sembolleri alması gerekiyorsa, tüm hata ayıklayıcılarının yakınında bir sembol deposuyla ortak bir sunucu ayarlayabilirsiniz. Ardından yukarıdaki sembol yolu ile her hata ayıklayıcıyı ayarlayın. Foo.pdb'nin belirli bir sürümünü gerektiren ilk hata ayıklayıcı bunu https://DistantServer\\NearbyServer\store'a ve ardından c:\localsymbols içindeki kendi makinesine indirir. Aynı dosyayı gerektiren sonraki hata ayıklayıcı, önceki hata ayıklayıcı tarafından bu konuma zaten indirilmiş olduğundan dosyayı \\NearbyServer\store konumundan indirebilir. Bu çok düzeyli önbelleğe alma, önemli ölçüde zaman ve ağ bant genişliği tasarrufu sağlar.

Microsoft Sembol Deposu

Microsoft, Windows işletim sisteminin birçok sürümü için sembol dosyaları içeren bir İnternet sembol sunucusuna erişim sağlar. Bu sembol kataloğunun eksiksiz olması garanti değildir, ancak kapsamlıdır. Diğer Microsoft ürünleri de temsil edilir.

İnternet sembol sunucusu, sık erişimli düzeltmeler, Hizmet Paketleri, Güvenlik Toplu Paketleri ve perakende sürümleri de dahil olmak üzere Microsoft Windows işletim sistemleri için çeşitli Windows sembolleriyle doldurulur. Semboller, geçerli Beta'lar ve Sürüm Adayları için, Windows ürünlerinin yanı sıra Microsoft Internet Explorer gibi çeşitli diğer Microsoft ürünleriyle sunucuda da kullanılabilir.

Hata ayıklama sırasında İnternet erişiminiz varsa, hata ayıklama oturumundan önce simge dosyalarını ayrı olarak indirmek yerine hata ayıklama oturumu sırasında simge indirecek şekilde hata ayıklayıcıyı yapılandırabilirsiniz. Simgeler belirttiğiniz bir dizin konumuna indirilir ve hata ayıklayıcı bunları oradan yükler.

Microsoft sembol deposunun URL'si https://msdl.microsoft.com/download/symbols. Aşağıdaki örnek, hata ayıklayıcı sembol yolunun nasıl ayarlanacağını göstermektedir (kendi alt akış deponuzun yolunu c:\DownstreamStoreyerine kullanın):

srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols

Sıkıştırılmış Dosyalar

SymSrv, bu sıkıştırma, Windows Server 2003 Resource Kit ile dağıtılan compress.exe aracıyla önceden biçimlendirilmiş olduğu sürece sıkıştırılmış dosyalar içeren sembol depolarıyla uyumludur. Sıkıştırılmış dosyaların dosya uzantılarındaki son karakter olarak bir alt çizgi olmalıdır (örneğin, module1.pd_ veya module2.db_). Ayrıntılar için bkz. SymStore kullanma.

Basamaklanırken, hedef depo yolun en soldaki deposu olmadığı sürece dosyalar sıkıştırılmış haliyle kalır. Yolda yalnızca bir depo varsa ve sıkıştırılmış bir dosya içeriyorsa, varsayılan aşağı akış deposu simge yolunda belirtilmemiş olsa bile SymSrv dosyayı varsayılan aşağı akış deposuna kopyalar ve oradan açar.

DbgHelp 6.1 ve öncesi.: Ana depodaki dosyalar sıkıştırılmışsa, aşağı akış deposu kullanmanız gerekir. SymSrv, aşağı akış deposuna kopyalamadan önce tüm dosyaların sıkıştırmasını kaldıracaktır.

Önbelleği Silme

Önbellek olarak aşağı akış deposu kullanıyorsanız, disk alanından tasarruf etmek için istediğiniz zaman bu dizini silebilirsiniz.

Birçok farklı program veya Windows sürümü için sembol dosyaları içeren geniş bir sembol deposuna sahip olmak mümkündür. Hedef bilgisayarınızda kullanılan Windows sürümünü yükseltirseniz, önbelleğe alınan sembol dosyalarının tümü önceki sürümle eşleşecektir. Önbelleğe alınan bu dosyalar daha fazla kullanılmayacaktır ve bu nedenle önbelleği silmek için uygun bir zaman olabilir.

Windows için Hata Ayıklama Araçları, dizin ağacından dosyaların bazılarını seçerek kaldıran ve en son kullanılan dosyaları bırakan agestore.exe adlı bir yardımcı programla birlikte gelir. Bu araç, sembol sunucusu depolarından kullanılmayan dosyaları ayıklamak için tasarlanmıştır. Kesme tarihi ve dizin boyutu algoritmaları dahil olmak üzere birçok seçeneği denetlemenizi sağlar.

Düz Önbellek Dizini

Varsayılan aşağı akış depoyu standart bir simge ağaç yapısı yerine düz bir dizin olarak bildirmek mümkündür. Bunu yapmak için SYMOPT_FLAT_DIRECTORY ile SymSetOptions işlevini çağırın (bu, SymSrv'de SSRVOPT_FLAT_DEFAULT_STORE seçeneğini de ayarlar). Bunu yapmadan önce SymSetHomeDirectory çağırdığından emin olun; aksi takdirde, sembol dosyaları program dizinine yazılabilir.

İşaretçi Dosyaları

SymStore, hedef dosyanın kendisi yerine hedef dosyaya işaret eden dosyalar oluşturabilir ve kullanabilir. Simge deposu böyle bir işaretçi dosyası içeriyorsa, varsayılan olarak dosyayı işaretçi dosyasında belirtilen konumdan depoya kopyalamaktır. Hedef depolama biriminde, işaretçi dosyanın işaret ettiği dosya yerine kendisinin kopyalanmasını sağlamak için kök dizine wantsptr.txt adlı bir dosya oluşturun. wantsptr.txt içeriği önemli değildir, yalnızca dosyanın varlığıdır.

Dosyaları Simgeler Listesinden Dışlama

Dosyaları bir simge aramasından dışlamak için adlarını symsrv.ini veya kayıt defterinde belirtebilirsiniz. symsrv.iniiçindeki dosyaları belirtmek için Dışlamalar adlı bir bölüm oluşturun ve dosyaları listeleyin. Dosya adları, aşağıdaki örnekte gösterildiği gibi joker karakterler içerebilir:

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini, symsrv.dll bulunduğu dizinde bulunmalıdır. Çoğu yüklemede dosya mevcut değildir ve yeni bir tane oluşturmanız gerekir.

Alternatif olarak, dışlanacak dosyaları kayıt defterinde depolayabilirsiniz. Aşağıdaki kayıt defteri anahtarını oluşturun: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Her dosya adını bu anahtar içinde bir dize değeri (REG_SZ) olarak depolayın. Dize değerinin adı, dışlanacak dosyanın adını belirtir. Dize değerinin içeriğini kullanarak dosyanın neden dışlandığını açıklayan bir açıklama depolayabilirsiniz.

Kurulum

SymSrv (symsrv.dll) sembol sunucusu, Windows için Hata Ayıklama Araçları paketine dahildir. Yüklediğiniz dbghelp.dll kopyasıyla aynı dizine yüklenmelidir. Daha fazla ayrıntı için bkz. dbghelp kitaplığını çağırma .