Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
SymSrv levert symboolbestanden uit gecentraliseerde symboolarchieven. Deze archieven kunnen een willekeurig aantal symboolbestanden bevatten, dat overeenkomt met een willekeurig aantal programma's of besturingssystemen. De winkels kunnen ook binaire bestanden bevatten, die met name handig zijn bij het opsporen van fouten in minidump-bestanden.
De winkels kunnen het werkelijke symbool en binaire bestanden bevatten of gewoon verwijzen naar symboolbestanden. Als het archief aanwijzers bevat, haalt SymSrv de werkelijke bestanden rechtstreeks uit hun bronnen op.
SymSrv kan ook een groot symboolarchief scheiden in een kleinere subset die geschikt is voor een gespecialiseerde foutopsporingstaak.
Tot slot kan SymSrv symboolbestanden verkrijgen van een HTTP- of HTTPS-bron met behulp van de aanmeldingsgegevens van het besturingssysteem. SymSrv ondersteunt HTTPS-sites die worden beveiligd door smartcards, certificaten en reguliere aanmeldingen en wachtwoorden.
Het symboolpad instellen
Zoals beschreven in symboolpaden, kan het symboolpad (_NT_SYMBOL_PATH omgevingsvariabele) bestaan uit verschillende padelementen, gescheiden door puntkomma's. Als een of meer van deze padelementen begint met de tekst 'srv*', is het element een symboolserver en gebruikt SymSrv om symboolbestanden te zoeken.
Notitie
Als de tekst 'srv*' niet is opgegeven, maar het werkelijke padelement een symboolserverarchief is, fungeert de symboolhandler alsof 'srv*' is opgegeven. De symboolhandler maakt deze bepaling door te zoeken naar het bestaan van een bestand met de naam 'pingme.txt' in de hoofdmap van het opgegeven pad.
Net zoals symboolpaden bestaan uit symboolpadelementen gescheiden door puntkomma's, bestaan symboolservers uit symboolopslagelementen gescheiden door sterretjes. Er kunnen maximaal 10 symbolen worden opgeslagen na het voorvoegsel 'srv*'. Winkels die links van de lijst worden vermeld, worden downstream winkels genoemd en winkels aan de rechterkant worden upstream winkels genoemd.
- srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*
Als er slechts één symboolarchiefelement is opgenomen in het pad, probeert SymSrv het aangevraagde bestand rechtstreeks vanuit dat archief te gebruiken.
Als er twee symboolarchieven in het pad staan, zoekt SymSrv naar het symboolbestand in het meest linkse symboolarchief. Als het bestand zich daar bevindt, wordt het gebruikt. Als het daar niet is, kijkt SymSrv direct naar het symboolarchief aan de rechterkant. Als het bestand daar is, wordt het gekopieerd naar de linker opslagruimte en daarvandaan geopend.
Als er meer dan twee winkels zijn, blijft dit gedrag aan de rechterkant totdat het bestand is gevonden of er geen winkels meer in de lijst staan.
Het bestand wordt nooit geopend vanuit een andere winkel dan de meest linkse winkel. Als het bestand ergens anders in de keten wordt gevonden, wordt het gekopieerd naar elke opslagplek aan de linkerkant ervan. Dit kopieerproces wordt 'trapsgewijs' genoemd en biedt bepaalde voordelen die later in dit document worden aangegeven.
Typen symboolopslagplaatsen
In de volgende tabel ziet u voorbeelden van de ondersteunde typen symbolenopslag.
| Type symboolopslag | Beschrijving |
|---|---|
| \\server\share | Een volledig gekwalificeerd UNC-pad naar een gedeelde map op een externe server. |
| c:\LocalCache | Een pad naar een map op de clientcomputer. |
| https://InternetSite | De URL naar een website die als host fungeert voor de symbolen. Moet de meest rechtse winkel in de lijst zijn en mag niet de enige winkel in de lijst zijn. |
| https://SecureInternetSite | De URL naar een beveiligde website die als host fungeert voor de symbolen. Dit kan ondersteuning bieden voor wachtwoorden, Windows-aanmeldingsreferenties, certificaten en smartcards. Moet de meest rechtse winkel in de lijst zijn en mag niet de enige winkel in de lijst zijn. |
| <blanco> | Als er geen tekst tussen twee sterretjes is, geeft dit de standaard downstreamopslag aan. De locatie wordt ingesteld door SymSetHomeDirectoryaan te roepen. De standaardwaarde is een map met de naam 'sym' direct onder de programmamap van de aanroepende toepassing. Dit wordt soms de standaard lokale cachegenoemd. |
Omdat een HTTP-symboolarchief niet naar kan worden geschreven, moet dit het meest rechtse archief in de lijst zijn. Als een op HTTP gebaseerde symboolopslag zich in het midden of links van de winkellijst bevond, zou het niet mogelijk zijn om gevonden bestanden ernaar te kopiëren en zou de keten worden verbroken. Bovendien mag een op HTTP gebaseerde winkel niet als eerste in de lijst staan of de enige winkel op de lijst zijn, omdat de symboolhandler een bestand niet kan openen vanaf een website. Als SymSrv ooit dit symboolpad tegenkomt, zal het proberen het op te lossen door het bestand te kopiëren naar de standaard downstream opslag en het daar te openen, ongeacht of de standaard downstream opslag wordt aangegeven in het symboolpad of niet.
Voorbeelden
Als u SymSrv wilt gebruiken met een symboolarchief op \\mybuilds\mysymbolen, stelt u het volgende symboolpad in:
_NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols
Als u het symboolpad zo wilt instellen dat het foutopsporingsprogramma symboolbestanden kopieert uit een symboolarchief op \\mybuilds\mysymbols naar uw lokale map c:\localsymbolen, gebruikt u:
set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols
Als u het symboolpad zo wilt instellen dat het foutopsporingsprogramma symboolbestanden kopieert uit een symboolarchief op \\mybuilds\mysymbols naar de standaard downstreamopslag (meestal c:\debuggers\sym), gebruikt u:
_NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols
Als u een trapsgewijze opslag wilt gebruiken, stelt u het volgende symboolpad in:
stel _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer
In dit voorbeeld zoekt SymSrv eerst naar het bestand in c:\localsymbolen. Als het daar wordt gevonden, wordt er een pad naar het bestand geretourneerd. Anders zoekt SymSrv het bestand in \\NearbyServer\store. Als het daar wordt gevonden, kopieert SymSrv het bestand naar c:\localsymbolen en retourneert een pad naar het bestand; Als het bestand niet wordt gevonden, zoekt SymSrv naar het bestand in https://DistantServeren als het daar wordt gevonden, kopieert SymSrv het bestand naar \\NearbyServer\store en vervolgens naar c:\localsymbolen.
In dit laatste voorbeeld ziet u hoe goedaardig ontwerp van een symboolpad kan worden gebruikt om het downloaden van symbolen te optimaliseren. Als u een werksite hebt met een groep foutopsporingsprogramma's en ze allemaal symbolen van een verre locatie moeten ophalen, kunt u een algemene server instellen met een symboolarchief in de buurt van alle foutopsporingsprogramma's. Stel vervolgens elk foutopsporingsprogramma in met het bovenstaande symboolpad. Het eerste foutopsporingsprogramma waarvoor een bepaalde versie van foo.pdb is vereist, downloadt het van https://DistantServer naar \\NearbyServer\store en vervolgens naar een eigen computer in c:\localsymbolen. Het volgende foutopsporingsprogramma waarvoor hetzelfde bestand is vereist, kan het downloaden van \\NearbyServer\store, omdat het al door het vorige foutopsporingsprogramma naar die locatie is gedownload. Deze caching op meerdere niveaus bespaart aanzienlijke tijd en netwerkbandbreedte.
Microsoft Symbol Store
Microsoft biedt toegang tot een server met internetsymbolen die symboolbestanden bevat voor de vele versies van het Windows-besturingssysteem. Deze catalogus met symbolen is niet gegarandeerd compleet, maar is uitgebreid. Andere Microsoft-producten worden ook weergegeven.
De internet-symboolserver wordt gevuld met verschillende Windows-symbolen voor Microsoft Windows-besturingssystemen, waaronder hotfixes, servicepacks, beveiligingsrolluppakketten en retailreleases. Symbolen zijn ook beschikbaar op de server voor huidige bètaversies en releasekandidaten voor Windows-producten, plus een verscheidenheid aan andere Microsoft-producten, zoals Microsoft Internet Explorer.
Als u tijdens foutopsporing toegang hebt tot internet, kunt u het foutopsporingsprogramma zo configureren dat symbolen naar behoefte worden gedownload tijdens een foutopsporingssessie, in plaats van symboolbestanden afzonderlijk te downloaden vóór een foutopsporingssessie. De symbolen worden gedownload naar een maplocatie die u opgeeft en vervolgens laadt het foutopsporingsprogramma ze daar.
De URL voor de Microsoft-symboolopslag is https://msdl.microsoft.com/download/symbols. In het volgende voorbeeld ziet u hoe u het pad voor de debugger-symbolen kunt instellen (vervang het pad naar de downstream-opslag door c:\DownstreamStore):
srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols
Gecomprimeerde bestanden
SymSrv is compatibel met symboolarchieven die gecomprimeerde bestanden bevatten, zolang deze compressie vooraf is gegaan door het compress.exe hulpprogramma dat is gedistribueerd met de Windows Server 2003 Resource Kit. Gecomprimeerde bestanden moeten een onderstrepingsteken hebben als het laatste teken in hun bestandsextensies (bijvoorbeeld module1.pd_ of module2.db_). Voor meer informatie, zie SymStore gebruiken.
Wanneer bestanden worden gecascadeerd, worden ze niet gedecomprimeerd, tenzij het doelarchief de meest linkse opslag in het pad is. Als er slechts één archief in het pad staat en het een gecomprimeerd bestand bevat, kopieert SymSrv het bestand naar de standaard downstreamopslag en opent het van daaruit, ook al wordt de standaard downstreamopslag niet aangegeven in het symboolpad.
DbgHelp 6.1 en eerder: Als de bestanden in het hoofdarchief zijn gecomprimeerd, moet u een downstream-archief gebruiken. SymSrv decomprimeert alle bestanden voordat ze naar de downstreamopslag worden gekopieerd.
De cache verwijderen
Als u een downstreamopslag gebruikt als cache, kunt u deze map op elk gewenst moment verwijderen om schijfruimte te besparen.
Het is mogelijk om een enorm symboolarchief te hebben met symboolbestanden voor veel verschillende programma's of Windows-versies. Als u de versie van Windows die op uw doelcomputer wordt gebruikt, upgradet, komen de symboolbestanden in de cache allemaal overeen met de eerdere versie. Deze in de cache opgeslagen bestanden worden niet verder gebruikt en daarom kan dit een goed moment zijn om de cache te verwijderen.
Foutopsporingsprogramma's voor Windows wordt geleverd met een hulpprogramma met de naam agestore.exe dat selectief bestanden uit een mapstructuur verwijdert, waardoor de meest recent gebruikte bestanden worden achtergelaten. Dit hulpprogramma is ontworpen voor het verwijderen van ongebruikte bestanden uit symboolserverarchieven. Hiermee kunt u veel opties beheren, waaronder algoritmen voor cut off-datum en mapgrootte.
Map voor platte cache
Het is mogelijk om de standaard downstream-opslag in te stellen als een platte map, in plaats van een standaard symboolstructuur. Hiervoor roept u de functie SymSetOptions aan met SYMOPT_FLAT_DIRECTORY (hiermee wordt ook de optie SSRVOPT_FLAT_DEFAULT_STORE ingesteld in SymSrv). Zorg ervoor dat u SymSetHomeDirectory aanroept voordat u dit doet; anders kunnen de symboolbestanden naar de programmamap worden geschreven.
Verwijzingsbestanden
SymStore kan bestanden maken en gebruiken die verwijzen naar een doelbestand in plaats van het doelbestand zelf. Als een symboolarchief een dergelijk aanwijzerbestand bevat, is het standaardinstelling om het bestand te kopiëren van de locatie die wordt aangegeven in het aanwijzerbestand naar het archief. Als u een archief wilt configureren zodat het aanwijzerbestand wordt gekopieerd in plaats van het bestand waarnaar wordt verwezen, maakt u een bestand met de naam wantsptr.txt in de hoofdmap van het doelarchief. De inhoud van wantsptr.txt is niet belangrijk, alleen de aanwezigheid van het bestand.
Bestanden uitsluiten uit de lijst met symbolen
Als u bestanden wilt uitsluiten van een symbolenzoekopdracht, kunt u hun namen opgeven in symsrv.ini of in het register. Als u de bestanden in symsrv.iniwilt opgeven, maakt u een sectie met de naam Uitsluitingen en geeft u de bestanden weer. De bestandsnamen kunnen jokertekens bevatten, zoals wordt weergegeven in het volgende voorbeeld:
[Exclusions]
dbghelp.pdb
symsrv.*
mso*
Symsrv.ini moet zich in dezelfde map bevinden die zich symsrv.dll bevindt. In de meeste installaties bestaat het bestand niet en moet u een nieuw bestand maken.
U kunt de bestanden ook opslaan die moeten worden uitgesloten in het register. Maak de volgende registersleutel: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Sla elke bestandsnaam op als tekenreekswaarde (REG_SZ) binnen deze sleutel. De naam van de tekenreekswaarde geeft de naam op van het bestand dat moet worden uitgesloten. U kunt de inhoud van de tekenreekswaarde gebruiken om een opmerking op te slaan waarin wordt beschreven waarom het bestand wordt uitgesloten.
Installatie
De SymSrv -symboolserver (symsrv.dll) is opgenomen in het pakket Hulpprogramma's voor foutopsporing voor Windows. Deze moet worden geïnstalleerd in dezelfde map als de kopie van dbghelp.dll die u laadt. Zie Calling the DbgHelp Libraryvoor meer informatie.