Sdílet prostřednictvím


Použití SymSrv

SymSrv doručuje soubory symbolů z centralizovaných úložišť symbolů. Tato úložiště mohou obsahovat libovolný počet souborů se symboly, které odpovídají libovolnému počtu programů nebo operačních systémů. Úložiště mohou také obsahovat binární soubory, které jsou zvláště užitečné při ladění minidump souborů.

Úložiště můžou obsahovat skutečný symbol a binární soubory nebo jednoduše ukazatele na soubory symbolů. Pokud úložiště obsahuje ukazatele, SymSrv načte skutečné soubory přímo z jejich zdrojů.

SymSrv může také oddělit velké úložiště symbolů do menší podmnožiny, která je vhodná pro specializovaný úkol ladění.

SymSrv může získat soubory symbolů ze zdroje HTTP nebo HTTPS pomocí přihlašovacích informací poskytovaných operačním systémem. SymSrv podporuje weby HTTPS chráněné čipovými kartami, certifikáty a běžnými přihlašovacími údaji a hesly.

Nastavení cesty symbolů

Jak je popsáno v cestách symbolů, cesta symbolů (proměnná prostředí _NT_SYMBOL_PATH) může být tvořena několika prvky cesty oddělenými středníky. Pokud některý z těchto prvků cesty začíná textem "srv*", je element serverem symbolů a pomocí SymSrv vyhledá soubory symbolů.

Poznámka

Pokud není zadaný text "srv*", ale skutečný prvek cesty je úložištěm serveru symbolů, obslužná rutina symbolů bude fungovat, jako by byla zadána "srv*". Obslužná rutina symbolu toto určení určí vyhledáním existence souboru s názvem "pingme.txt" v kořenovém adresáři zadané cesty.

 

Stejně jako cesty symbolů se skládají z prvků cesty symbolů oddělených středníky, servery symbolů se skládají z prvků úložiště symbolů oddělených hvězdičkami. Za předponou srv*může být až 10 úložišť symbolů. Obchody uvedené nalevo od seznamu se nazývají podřízené obchody a obchody na pravé straně se nazývají nadřízené obchody.

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

Pokud je v cestě zahrnut pouze jeden prvek úložiště symbolů, pokusí se SymSrv použít libovolný požadovaný soubor přímo z daného úložiště.

Pokud jsou v cestě dvě úložiště symbolů, SymSrv hledá soubor symbolu v úložišti symbolů úplně vlevo. Pokud tam soubor je, použije se. Pokud tam není, SymSrv hledá vedle v úložišti symbolů. Pokud tam soubor je, zkopíruje se do levého úložiště a otevře se odsud.

Pokud existuje více než dvě úložiště, toto chování pokračuje doprava, dokud se soubor nenajde nebo v seznamu nejsou žádná další úložiště.

Soubor se nikdy neotevře z žádného úložiště, ale úplně vlevo. Pokud se soubor nachází kdekoli jinde v řetězci, zkopíruje se do každého úložiště nalevo od něj. Tento proces kopírování se nazývá "kaskádování" a poskytuje určité výhody, které budou později v tomto dokumentu vysvětleny.

Typy úložišť symbolů

Následující tabulka obsahuje příklady podporovaných typů úložiště symbolů.

Typ úložiště symbolů Popis
\\server\share Plně kvalifikovaná cesta UNC ke sdílené složce na vzdáleném serveru.
c:\LocalCache Cesta k adresáři v klientském počítači.
https://InternetSite Adresa URL webu, který je hostitelem symbolů. Musí být úplně vpravo v seznamu a neměl by být jediným obchodem.
https://SecureInternetSite Adresa URL zabezpečeného webu hostujícího symboly. To může podporovat hesla, přihlašovací údaje systému Windows, certifikáty a čipové karty. Musí být nejvíce napravo v seznamu a neměl by být jediným obchodem v seznamu.
<prázdné> Pokud mezi dvěma hvězdičkami není žádný text, znamená to výchozí podřízené úložiště . Umístění je nastaveno voláním SymSetHomeDirectory. Výchozí hodnota je adresář s názvem "sym" bezprostředně pod programovým adresářem volající aplikace. To se někdy označuje jako výchozí místní mezipaměť.

 

Vzhledem k tomu, že úložiště symbolů založené na protokolu HTTP nelze zapsat do, musí se jednat o úložiště nejvíce vpravo v seznamu. Pokud bylo úložiště symbolů založené na protokolu HTTP umístěné uprostřed nebo nalevo od seznamu obchodů, nebylo by možné zkopírovat žádné nalezené soubory a řetěz by se přerušil. Vzhledem k tomu, že obslužná rutina symbolů nemůže otevřít soubor z webu, úložiště založené na protokolu HTTP by nemělo být jako první nebo jediné v seznamu. Pokud se SymSrv někdy zobrazí s touto cestou symbolu, pokusí se obnovit zkopírováním souboru do výchozího podřízeného úložiště a jeho otevřením odsud bez ohledu na to, jestli je výchozí podřízené úložiště uvedené v cestě symbolu nebo ne.

Příklady

Pokud chcete použít SymSrv s úložištěm symbolů na \\mybuilds\mysymbols, nastavte následující cestu symbolu:

nastavit _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

Pokud chcete nastavit cestu symbolu tak, aby ladicí program zkopíroval soubory symbolů z úložiště symbolů na \\mybuilds\mysymbols do místního adresáře c:\localsymbols, použijte:

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

Pokud chcete nastavit cestu symbolu tak, aby ladicí program zkopíroval soubory symbolů z úložiště symbolů na \\mybuilds\mysymbols do výchozího podřízeného úložiště (obvykle c:\debuggers\sym), použijte:

nastavit _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

Chcete-li použít kaskádové úložiště, nastavte symbolovou cestu takto:

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

V tomto příkladu SymSrv nejprve vyhledá soubor v c:\localsymbols. Pokud se tam najde, vrátí cestu k souboru. Jinak SymSrv vyhledá soubor v \\NearbyServer\store. Pokud tam je nalezen, SymSrv zkopíruje soubor do c:\localsymbols a vrátí cestu k souboru; Pokud nebyl nalezen, SymSrv hledá soubor v https://DistantServera pokud tam je nalezen, SymSrv zkopíruje soubor do \\NearbyServer\store, pak do c:\localsymbols.

Tento poslední příklad ukazuje, jak je možné použít uvážlivý návrh cesty symbolů k optimalizaci stahování symbolů. Pokud máte pracoviště se skupinou laditelů a všichni potřebují získat symboly ze vzdáleného umístění, můžete nastavit společný server s úložištěm symbolů blízko všem laditelům. Potom nastavte každý ladicí program s výše uvedenou cestou symbolu. První ladicí program, který vyžaduje určitou verzi souboru foo.pdb, si ho stáhne z https://DistantServer do \\NearbyServer\store a potom do vlastního počítače v c:\localsymbols. Další ladicí program, který vyžaduje stejný soubor, ho bude moct stáhnout z \\NearbyServer\store, protože byl již stažen do daného umístění předchozím ladicím programem. Tato víceúrovňová ukládání do mezipaměti šetří značnou dobu a šířku pásma sítě.

Microsoft Symbol Store

Společnost Microsoft poskytuje přístup k serveru symbolů internetu, který obsahuje soubory symbolů pro mnoho verzí operačního systému Windows. Tento katalog symbolů není zaručený jako úplný, ale je rozsáhlý. Další produkty Microsoftu jsou také reprezentovány.

Symbolový server internetu je naplněn celou řadou symbolů Windows pro operační systémy Microsoft Windows, včetně oprav hotfix, aktualizací typu Service Pack, kumulativních balíčků zabezpečení a maloobchodních verzí. Symboly jsou také k dispozici na serveru pro aktuální beta verze a kandidáty na vydání pro produkty Windows a řadu dalších produktů Společnosti Microsoft, jako je Například Microsoft Internet Explorer.

Pokud máte během ladění přístup k internetu, můžete ladicí program nakonfigurovat tak, aby podle potřeby stáhl symboly během ladicí relace, a ne samostatně stahovat soubory symbolů před ladicí relací. Symboly se stáhnou do umístění adresáře, které zadáte, a ladicí program je odtud načte.

Adresa URL obchodu se symboly Microsoftu je https://msdl.microsoft.com/download/symbols. Následující příklad ukazuje, jak nastavit cestu symbolu ladicího programu (nahraďte cestu podřízeného úložiště c:\DownstreamStore):

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

Komprimované soubory

SymSrv je kompatibilní s úložišti symbolů, které obsahují komprimované soubory, pokud je tato komprese předem upravena nástrojem compress.exe, který byl distribuován se sadou Windows Server 2003 Resource Kit. Komprimované soubory by měly mít podtržítko jako poslední znak v příponách souborů (například module1.pd_ nebo module2.db_). Podrobnosti najdete v tématu Použití SymStore.

Při sestupném zpracování nejsou soubory rozbaleny, pokud cílové úložiště není nejlevější úložiště v cestě. Pokud je v cestě pouze jedno úložiště a obsahuje komprimovaný soubor, SymSrv zkopíruje soubor do výchozího podřízeného úložiště a otevře ho odsud, i když výchozí podřízené úložiště není uvedené v cestě symbolu.

DbgHelp 6.1 a starší.: Pokud jsou soubory v hlavním úložišti komprimované, musíte použít podřízené úložiště. SymSrv zruší dekomprimování všech souborů před jejich zkopírováním do podřízeného úložiště.

Odstranění mezipaměti

Pokud jako mezipaměť používáte podřízené úložiště, můžete tento adresář kdykoli odstranit, abyste ušetřili místo na disku.

Je možné mít obrovské úložiště symbolů, které obsahuje soubory symbolů pro mnoho různých programů nebo verzí Windows. Pokud upgradujete verzi Windows použitou na cílovém počítači, všechny soubory symbolů uložených v mezipaměti budou odpovídat předchozí verzi. Tyto soubory v mezipaměti se nebudou dále používat, a proto může být vhodná doba k odstranění mezipaměti.

Nástroje pro ladění pro Windows jsou dodávány s nástrojem označovaným jako agestore.exe, který selektivně odebere soubory ze stromu adresáře a ponechá naposledy použité soubory. Tento nástroj je určený pro vyřazení nepoužívaných souborů z úložišť serverů symbolů. Umožňuje řídit mnoho možností, včetně algoritmů pro datum uzávěrky a velikosti adresáře.

Adresář ploché mezipaměti

Výchozí podřízené úložiště je možné deklarovat jako plochý adresář, nikoli jako standardní strukturu stromu symbolů. Uděláte to tak, že zavoláte funkci SymSetOptions s SYMOPT_FLAT_DIRECTORY (tím se také nastaví možnost SSRVOPT_FLAT_DEFAULT_STORE v SymSrv). Před tím nezapomeňte volat SymSetHomeDirectory; v opačném případě mohou být soubory symbolů zapsány do adresáře programu.

Soubory ukazatelů

SymStore může vytvářet a používat soubory, které odkazují na cílový soubor místo samotného cílového souboru. Pokud úložiště symbolů obsahuje takový soubor ukazatele, je výchozím nastavením zkopírovat soubor z umístění uvedeného v souboru ukazatele do úložiště. Pokud chcete nakonfigurovat úložiště tak, aby se soubor ukazatele zkopíroval místo souboru, na který odkazuje, vytvořte soubor s názvem wantsptr.txt v kořenovém adresáři cílového úložiště. Obsah wantsptr.txt není důležitý, pouze přítomnost souboru.

Vyloučení souborů ze seznamu symbolů

Pokud chcete vyloučit soubory z hledání symbolů, můžete jejich názvy zadat v symsrv.ini nebo v registru. Pokud chcete zadat soubory v symsrv.ini, vytvořte oddíl s názvem Vyloučení a vypište soubory. Názvy souborů můžou obsahovat zástupné kóty, jak je znázorněno v následujícím příkladu:

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini by se měla nacházet ve stejném adresáři, ve kterém se nachází symsrv.dll. Ve většině instalací soubor neexistuje a budete muset vytvořit nový.

Případně můžete uložit soubory, které mají být vyloučeny v registru. Vytvořte následující klíč registru: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Každý název souboru uložte jako řetězcovou hodnotu (REG_SZ) v rámci tohoto klíče. Název řetězcové hodnoty určuje název souboru, který se má vyloučit. Obsah řetězcové hodnoty můžete použít k uložení komentáře popisujícího, proč je soubor vyloučený.

Instalace

Server symbolů SymSrv (symsrv.dll) je součástí balíčku Nástroje ladění pro Windows. Musí být nainstalován ve stejném adresáři jako kopie dbghelp.dll, kterou načítáte. Další podrobnosti najdete v tématu Volání knihovny DbgHelp.