Dela via


Avancerad SymSrv-användning

SymSrv kan leverera symbolfiler från ett centraliserat symbolarkiv. Det här arkivet kan innehålla valfritt antal symbolfiler som motsvarar valfritt antal program eller operativsystem. Butiken kan också innehålla binära filer (detta är användbart när du felsöker minidumpar).

Arkivet kan innehålla den faktiska symbolen och binära filer, eller så kan det bara innehålla pekare till symbolfiler. Om lagret innehåller pekare hämtar SymSrv de faktiska filerna direkt från sina källor.

SymSrv kan också användas för att separera ett stort symbolarkiv i en mindre delmängd som är lämplig för en specialiserad felsökningsaktivitet.

Slutligen kan SymSrv hämta symbolfiler från en HTTP- eller HTTPS-källa med hjälp av inloggningsinformationen som tillhandahålls av operativsystemet. SymSrv stöder HTTPS-webbplatser som skyddas av smartkort, certifikat och vanliga inloggningar och lösenord. Mer information finns i HTTP-symbolarkiv.

Ange symbolsökvägen

Om du vill använda den här symbolservern måste symsrv.dll installeras i samma katalog som felsökningsprogrammet. Symbolsökvägen kan anges enligt den här koden:

set _NT_SYMBOL_PATH = symsrv*ServerDLL*DownstreamStore*\\Server\Share

set _NT_SYMBOL_PATH = symsrv*ServerDLL*\\Server\Share

set _NT_SYMBOL_PATH = srv*DownstreamStore*\\Server\Share

set _NT_SYMBOL_PATH = srv*\\Server\Share

Delarna i den här syntaxen förklaras på följande sätt:

symsrv
Det här nyckelordet måste alltid visas först. Det anger för felsökaren att det här objektet är en symbolserver, inte bara en normal symbolkatalog.

ServerDLL
Anger namnet på symbolserverns DLL. Om du använder SymSrv-symbolservern är detta alltid symsrv.dll.

srv
Detta är en förkortning för symsrv*symsrv.dll.

DownstreamStore
Anger den underordnade lagringen. Det här är en lokal katalog eller nätverksdelning som ska användas för att cachelagra enskilda symbolfiler.

Du kan ange mer än ett nedströmslager, avgränsat med asterisker. Flera nedströmsbutiker förklaras i Sammanhängande nedströmsbutiker längre ner på den här sidan.

Om du inkluderar två asterisker i en rad där ett nedströmslager normalt skulle anges, används standardlagringsplatsen i nedströms. Det här lagret kommer att finnas i underkatalogen sym i hemkatalogen. Startkatalogen är som standard installationskatalogen för felsökningsprogrammet. Detta kan ändras med hjälp av !homedir-tillägget eller genom att ange DBGHELP_HOMEDIR miljövariabeln.

Om DownstreamStore anger en katalog som inte finns försöker SymStore skapa den.

Om parametern DownstreamStore utelämnas och ingen extra asterisk ingår– med andra ord, om du använder srv med exakt en asterisk eller symsrv med exakt två asterisker – skapas inget nedströmslager. Felsökningsprogrammet läser in alla symbolfiler direkt från servern, utan att cachelagra dem lokalt.

Notera Om du kommer åt symboler från en HTTP- eller HTTPS-webbplats, eller om symbolarkivet använder komprimerade filer, används alltid en nedströmsbutik. Om inget underordnat arkiv har angetts skapas ett i underkatalogen sym i hemkatalogen.

\\Server\Share
Anger servern och resursen för fjärrsymbolarkivet.

Om ett underordnat arkiv används letar felsökningsprogrammet först efter en symbolfil i det här arkivet. Om symbolfilen inte hittas, letar felsökaren upp symbolfilen från den angivna servern och delningen, och cachelagrar sedan en kopia av den här filen i det efterföljande lagret. Filen kopieras till en underkatalog i trädet under DownstreamStore som motsvarar dess plats i trädet under \\Server\Share.

Symbolservern behöver inte vara den enda posten i symbolsökvägen. Om symbolsökvägen består av flera poster kontrollerar felsökningsprogrammet varje post för de nödvändiga symbolfilerna i tur och ordning (från vänster till höger), oavsett om det handlar om en symbolserver eller en faktisk katalog.

Här följer några exempel. Om du vill använda SymSrv som symbolserver med ett symbolarkiv på \\mybuilds\mysymbols anger du följande symbolsökväg:

set _NT_SYMBOL_PATH= symsrv*symsrv.dll*\\mybuilds\mysymbols

Om du vill ange symbolsökvägen så att felsökaren kopierar symbolfiler från ett symbolarkiv på \\mybuilds\mysymbols till din lokala katalog c:\localsymbols använder du:

set _NT_SYMBOL_PATH=symsrv*symsrv.dll*c:\localsymbols*\\mybuilds\mysymbols

Om du vill ange symbolsökvägen så att felsökaren kopierar symbolfiler från HTTPS-platsen https://www.company.com/manysymbols till en lokal nätverkskatalog \\localserver\myshare\mycache använder du:

set _NT_SYMBOL_PATH=symsrv*symsrv.dll*\\localserver\myshare\mycache*https://www.company.com/manysymbols

Det sista exemplet kan också förkortas så här:

set _NT_SYMBOL_PATH=srv*\\localserver\myshare\mycache*https://www.company.com/manysymbols

Dessutom kan symbolsökvägen innehålla flera kataloger eller symbolservrar, avgränsade med semikolon. På så sätt kan du hitta symboler från flera platser (eller till och med flera symbolservrar). Om en binär fil har en felmatchad symbolfil kan felsökaren inte hitta den med hjälp av symbolservern eftersom den endast söker efter de exakta parametrarna. Felsökaren kan dock hitta en felaktigt matchad symbolfil med rätt namn via den traditionella symbolsökvägen och lyckas läsa in den. Även om filen tekniskt sett inte är rätt symbolfil kan den ge användbar information.

Ta bort cachen

Om du använder en DownstreamStore som cacheminne kan du när som helst ta bort den här katalogen för att spara diskutrymme.

Det är möjligt att ha ett stort symbolarkiv som innehåller symbolfiler för många olika program eller Windows-versioner. Om du uppgraderar versionen av Windows som används på måldatorn matchar alla cachelagrade symbolfiler den tidigare versionen. Dessa cachelagrade filer kommer inte att användas ytterligare, och därför kan det vara ett bra tillfälle att ta bort cacheminnet.

Sammanhängande underordnade butiker

Du kan ange valfritt antal underordnade butiker, avgränsade med asterisker. Dessa kallas för kaskadsymbolbutiker.

Efter den inledande srv* eller symsrv*ServerDLL*, representerar varje efterföljande token en symbolplats. Token längst till vänster kontrolleras först. En tom token – som anges av två asterisker i en rad, eller av en asterisk i slutet av strängen – representerar standardlagringsplatsen i nedströms.

Här är ett exempel på en symbolsökväg som använder två nedströmslager för att lagra information från huvudsymbollagret som används. Dessa kan kallas huvudarkivet, mellannivåarkivet och det lokala cacheminnet:

srv*c:\localcache*\\interim\store*https://msdl.microsoft.com/download/symbols

I det här scenariot letar SymSrv först efter en symbolfil i c:\localcache. Om den hittas där kommer det att returnera en sökväg till den. Om den inte hittas där kommer den att söka i \\interim\store. Om symbolfilen hittas där kopierar SymSrv den till c:\localcache och returnerar sökvägen. Om den inte hittas där kommer SymSrv att titta i Microsofts offentliga symbolarkivhttps://msdl.microsoft.com/download/symbols. Om filen hittas där kopierar SymSrv den till både \\interim\store och c:\localcache.

Ett liknande beteende skulle erhållas med hjälp av följande sökväg:

srv**\\interim\store*https://internetsite

I det här fallet är den lokala cachen standardlagringsplatsen och huvudarkivet är en webbplats. Ett mellannivålager för \\interim\store har angetts för användning mellan de andra två.

När SymSrv bearbetar en sökväg som innehåller sammanhängande butiker hoppar den över alla butiker som den inte kan läsa eller skriva till. Om en delning går ned kopieras filen till lagret nedströms från det saknade lagret utan fel. En bra bieffekt av det här felet är att användaren kan ange fler än ett huvudarkiv som matar en enda ström av underordnade butiker så länge huvudarkiven inte kan skrivas.

När en komprimerad symbolfil hämtas från huvudarkivet lagras den i komprimerad form i alla mellannivålager. Filen kommer att dekomprimeras i den nedersta lagringen i sökvägen.

Arbeta med HTTP- och SMB-symbolserversökvägar

Som tidigare nämnts syftar länkning (eller kaskadering) på kopieringen som inträffar mellan varje "*" avgränsare i symbolsökvägen. Symbolerna söks efter i en vänster-till-höger-ordning. Vid varje miss efterfrågas nästa (överordnade) symbolserver tills filen hittas.

Om det hittas kopieras filen från symbolservern (överordnad) till den tidigare symbolservern (nedströms). Detta upprepas för varje (underordnade) symbolserver. På så sätt fylls de (delade) underordnade symbolservrarna i med de gemensamma insatserna för alla klienter som använder symbolservrarna.

Även om länkade UNC-sökvägar kan användas utan SRV*-prefixet, rekommenderar vi att SRV* anges så att den avancerade felhanteringen av symsrv.dll kan användas.

När du inkluderar en HTTP-symbolserver i sökvägen kan endast en anges (per kedja) och den måste vara i slutet av sökvägen (eftersom den inte kan skrivas för att fungera som en cache). Om ett HTTP-baserat symbolarkiv fanns i mitten eller till vänster om butikslistan skulle det inte vara möjligt att kopiera några hittade filer till den och kedjan skulle brytas. Eftersom symbolhanteraren inte kan öppna en fil från en webbplats bör ett HTTP-baserat arkiv inte vara det första eller enda arkivet i listan. Om SymSrv någonsin presenteras med den här symbolsökvägen, försöker den återhämta sig genom att kopiera filen till standardlagringsplatsen nedströms och öppna filen därifrån, oavsett om standardlagringsplatsen nedströms anges i symbolsökvägen eller inte.

HTTP stöds endast när du använder SRV*-prefixet (implementerat av symsrv.dll symbolhanteraren).

Exempel på http- och SMB-resurssymbolserverscenarier

En vanlig unc-only-distribution omfattar ett centralt kontor som är värd för alla filer (\\MainOffice\Symbols), avdelningskontor som cachelagrar en delmängd (\\BranchOfficeA\Symbols) och skrivbord (C:\Symbols) som cachelagrar de filer som de refererar till.

srv*C:\Symbols*\\BranchOfficeA\Symbols*\\MainOffice\Symbols

När SMB-resursen är det primära symbolförrådet (uppströms) krävs behörighet för läsning.

srv*C:\Symbols*\\MachineName\Symbols

När SMB-resursen fungerar som ett mellanliggande (nedströms) symbolarkiv krävs behörighet för Läs/Ändra. Klienten kopierar filen från det primära symbolarkivet till SMB-resursen och sedan från SMB-resursen till den lokala mappen.

srv*C:\Symbols*\\MachineName\Symbols*https://msdl.microsoft.com/download/symbols
srv*C:\Symbols*\\MachineName\Symbols*\\MainOffice\Symbols

När SMB-resursen är ett mellanliggande (nedströms)-symbolarkiv i en SymProxy-distribution krävs endast Read. SymProxy ISAPI-filtret utför skrivningar, inte klienten.

srv*C:\Symbols*\\MachineName\Symbols*https://SymProxyName/Symbols

Flera scenarier för symbolservercache med HTTP och SMB-delning

Det går att ange flera kedjor av symbolservrar och cacheplatser, avgränsade med semikolonet ";". Om symbolerna finns i den första kedjan går inte den andra kedjan igenom. Om symbolerna inte finns i den första kedjan kommer den andra kedjan att passeras och om symbolerna finns i den andra kedjan cachelagras de på den angivna platsen. Med den här metoden kan en primär symbolserver normalt användas, med en sekundär server som endast används, om symbolerna inte är tillgängliga på den primära symbolservern som anges i den första kedjan.

srv*C:\Symbols*\\Machine1\Symbols*https://SymProxyName/Symbols;srv*C:\WebSymbols*https://msdl.microsoft.com/download/symbols

cache*localsymbolcache

Ett annat sätt att skapa en lokal cache med symboler är att använda strängen cache*localsymbolcache i din symbolsökväg. Detta är inte en del av symbolserverelementet, utan ett separat element i symbolsökvägen. Felsökningsprogrammet använder den angivna katalogen localsymbolcache för att lagra alla symboler som läses in från alla element som visas i symbolsökvägen till höger om strängen. På så sätt kan du använda en lokal cache för symboler som laddats ned från valfri plats, inte bara de som laddas ned av en symbolserver.

Till exempel cachelagrar följande symbolsökväg inte symboler som hämtats från \\someshare. Den använder c:\mysymbols för att cachelagrar symboler som hämtats från \\anothershare, eftersom elementet som börjar med \\anothershare visas till höger om cachen*c:\mysymbols-elementet . Den använder också c:\mysymbols för att cachelagrar symboler som hämtats från Microsofts offentliga symbolarkiv, på grund av den vanliga syntax som används av symbolservern (srv med två eller flera asterisker). Om du sedan använder kommandot .sympath+ för att lägga till ytterligare platser i den här sökvägen cachelagras även dessa nya element, eftersom de läggs till till höger om sökvägen.

_NT_SYMBOL_PATH=\\someshare\that\cachestar\ignores;srv*c:\mysymbols*https://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached

Så här letar SymSrv upp filer

SymSrv skapar en fullständigt kvalificerad UNC-sökväg till önskad symbolfil. Den här sökvägen börjar med sökvägen till symbolarkivet som registrerats i _NT_SYMBOL_PATH miljövariabeln. Rutinen SymbolServer används sedan för att identifiera namnet på den önskade filen. det här namnet läggs till i sökvägen som ett katalognamn. Ett annat katalognamn, som består av sammanlänkningen av ID: t, två och tre parametrar som skickas till SymbolServer, läggs sedan till. Om något av dessa värden är noll utelämnas de.

Den resulterande katalogen söks efter symbolfilen eller en symbolarkivpekarfil.

Om sökningen lyckas skickar SymbolServer sökvägen till anroparen och returnerar TRUE. Om filen inte hittas returnerar SymbolServerFALSE.

Använda AgeStore för att minska cachestorleken

Verktyget AgeStore kan användas för att ta bort cachelagrade filer som är äldre än ett angivet datum eller för att minska innehållet i cacheminnet under en angiven storlek. Detta kan vara användbart om ditt nedströmslager är för stort. Mer information finns i AgeStore.