Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Symbolsökvägen anger platser där Windows-felsökare, till exempel WinDbg, KD, CDB och NTST, letar efter symbolfiler. Genom att konfigurera symbolsökvägen korrekt kan du felsöka effektivt genom att tillåta felsökningsprogram att automatiskt hitta och läsa in de symbolfiler som behövs för att analysera kodkörningen. Mer information om symboler och symbolfiler finns i Symboler.
Vissa kompilatorer, inklusive Microsoft Visual Studio, placerar symbolfiler i samma katalog som de binära filerna. Symbolfilerna och de markerade binära filerna innehåller sökvägs- och filnamnsinformation, vilket gör att felsökaren kan hitta symbolfilerna automatiskt. Om du felsöker en process i användarläge på datorn där du skapade den körbara filen, och om symbolfilerna finns på den ursprungliga platsen, kan felsökaren hitta symbolfilerna utan att du ställer in symbolsökvägen.
I de flesta andra situationer måste du ange symbolsökvägen så att den pekar på symbolfilens platser.
Tips
Använd .symfix för att ange en standardsökväg till den offentliga Offentliga Microsoft-symbolservern som fungerar bra i många situationer.
Syntax för symbolsökväg
Felsökningsprogrammets symbolsökväg är en sträng som består av flera katalogsökvägar avgränsade med semikolon. Till exempel C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.
Relativa sökvägar stöds. Du bör dock lägga till en enhetsbeteckning eller en nätverksresurs före varje sökväg, såvida du inte alltid startar felsökningsprogrammet från samma katalog. Nätverksdelningar stöds också.
För varje mapp i symbolsökvägen ser felsökningsprogrammet i tre mappar. Om symbolsökvägen till exempel innehåller C:\Dir1 och felsökaren letar efter symbolinformation för en DLL letar felsökningsprogrammet efter symbolinformation i följande kataloger, som visas i ordning:
C:\Dir1\symbols\dllC:\Dir1\dllC:\Dir1
Felsökningsprogrammet upprepar sedan den här processen för varje katalog i symbolsökvägen. Slutligen söker felsökningsprogrammet i den aktuella katalogen och sedan i den aktuella katalogen med tillägget ..\dll. Felsökningsprogrammet lägger till ..\dll, ..\exeeller ..\sys, beroende på vilka binärfiler det felsöker.
Symbolfiler har datum- och tidsstämplar. Felsökningsprogrammet letar alltid efter de symboler som matchar tidsstämpeln för de binära filer som den felsöker. Du behöver inte oroa dig för att felsökningsprogrammet ska använda felaktiga symboler som det först hittar i den här sekvensen. Mer information om svar när symbolfiler inte är tillgängliga finns i Matchande symbolnamn.
Ett sätt att ange symbolsökvägen är genom att ange kommandot .sympath. Andra sätt att ange symbolsökvägen finns i Kontrollera symbolsökvägen senare i det här avsnittet.
Cachesymboler lokalt
Lagra dina symboler lokalt. Ett sätt att lagra symboler i cache lokalt är att ange cache*; eller cache*localsymbolcache; i din symbol-sökväg.
Om du inkluderar strängen cache*; i symbolsökvägen lagrar felsökningsprogrammet symboler som den läser in från alla element som visas till höger om strängen i standardkatalogen för symbolcache på den lokala datorn. Följande kommando uppmanar exempelvis felsökaren att hämta symboler från nätverksresursen med namnet \\someshare och cachelagra symbolerna på standardplatsen på den lokala datorn.
.sympath cache*;\\someshare
Om du inkluderar strängen cache*localsymbolcache; i din symbolsökväg lagrar felsökningsprogrammet symboler som den läser in från alla element som visas till höger om strängen i katalogen localsymbolcache .
Till exempel uppmanar följande kommando felsökaren att hämta symboler från nätverksdelningen \\someshare och cachelagra symbolerna i katalogen c:\MySymbols.
.sympath cache*C:\MySymbols;\\someshare
Använda en symbolserver: srv*
Om du är ansluten till Internet eller ett företagsnätverk är det mest effektiva sättet att komma åt symboler att använda en symbolserver som den offentliga Microsofts offentliga symbolserver. Du kan använda en symbolserver genom att använda en av följande strängar i din symbolsökväg.
Strängen
srv*Om du inkluderar strängen
srv*i symbolsökvägen använder felsökningsprogrammet en symbolserver för att hämta symboler från standardsymbollagret. Följande kommando uppmanar till exempel felsökaren att hämta symboler från standardsymbolarkivet. Dessa symboler cachelagras inte på den lokala datorn..sympath srv*Strängen
srv*symbolstoreOm du inkluderar strängen
srv*symbolstorei symbolsökvägen använder felsökningsprogrammet en symbolserver för att hämta symboler från symbolarkivet. Följande kommando uppmanar till exempel felsökaren att hämta symboler från Microsoft-symbolservern store. Dessa symboler cachelagras inte på den lokala datorn..sympath srv*https://msdl.microsoft.com/download/symbolsSträngen
srv*localsymbolcache*symbolstoreOm du inkluderar strängen
srv*localcache*symbolstorei symbolsökvägen använder felsökningsprogrammet en symbolserver för att hämta symboler från symbolarkiv och cachelagrar dem i katalogen localcache. Följande kommando uppmanar till exempel felsökaren att hämta symboler från Microsoft-symbolservern –https://msdl.microsoft.com/download/symbolsoch cachelagrat symbolerna ic:\MyServerSymbols..sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Om du har en katalog på datorn där du placerar symboler manuellt ska du inte använda den katalogen som cacheminne för symboler som hämtas från en symbolserver. Använd i stället två separata kataloger. Du kan till exempel manuellt placera symboler i c:\MyRegularSymbols och sedan ange c:\MyServerSymbols som en cache för symboler som hämtas från en server. I följande exempel visas hur du anger båda katalogerna i symbolsökvägen.
.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Mer information om symbolservrar och symbollager finns i Anpassade symbollager och symbolservrar.
Kombinera cache* och srv*
Om du inkluderar strängen cache*; i symbolsökvägen lagrar felsökningsprogrammet symboler som den läser in från alla element som visas till höger om strängen i standardkatalogen för symbolcache på den lokala datorn. Följande kommando instruerar exempelvis felsökaren att hämta symboler från Microsoft-symbolservern och lagra och cachelagra dem i standardkatalogen för symbolcache.
.sympath cache*;srv*https://msdl.microsoft.com/download/symbols
Om du inkluderar strängen cache*localsymbolcache; i din symbolsökväg lagrar felsökningsprogrammet symboler som den läser in från alla element som visas till höger om strängen i katalogen localsymbolcache .
Följande kommando uppmanar till exempel felsökaren att hämta symboler från Microsoft-symbolservern lagra och cachelagrat symbolerna i katalogen c:\MySymbols.
.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols
Använd AgeStore för att minska cachestorleken
Du kan använda verktyget AgeStore för att ta bort cachelagrade filer som är äldre än ett angivet datum eller för att ta bort tillräckligt många gamla filer så att den resulterande cachestorleken är mindre än en angiven mängd. Den här rensningen av cachefiler är användbar om ditt nedströmslager blir för stort.
Lazy-symbolinläsning
Felsökaren använder lazy symbol loading som standardinställning. Den här typen av inläsning innebär att felsökaren inte läser in symboler förrän den behöver dem.
När du ändrar symbolsökvägen, till exempel med hjälp av kommandot .sympath, läser felsökningsprogrammet lätt in alla inlästa moduler med exportsymboler.
Felsökningsprogrammet läser lazily in symboler för moduler med fullständiga PDB-symboler om den nya sökvägen inte längre innehåller den ursprungliga sökvägen som användes för att läsa in PDB-symbolerna. Om den nya sökvägen fortfarande innehåller den ursprungliga sökvägen till PDB-symbolfilen läser felsökaren inte in symbolerna på nytt.
Du kan inaktivera lat symbolinläsning i CDB och KD med hjälp av kommandoradsalternativet -s. Du kan också framtvinga symbolinläsning med hjälp av kommandot ld load symbols eller med hjälp av kommandot .reload module tillsammans med alternativet /f.
Artefakter i Azure DevOps Services
En symbolserver är tillgänglig med Azure Artifacts i Azure DevOps Services. Mer information om hur du arbetar med Azure Artifacts i WinDbg finns i Felsöka med symboler i WinDbg (Azure Artifacts). Allmän information om Azure-genererade symboler finns i översikten över symboler (Azure Artifacts).
Kontrollera symbolsökvägen
Om du vill styra symbolsökvägen väljer du någon av följande metoder:
Använd kommandot .symfix set symbol store path för att ange en standardsökväg till den offentliga Microsoft-symbolservern som fungerar bra i många situationer. Om du vill ange en lokal cache skriver du
.symfix C:\MyCache.Använd kommandot .sympath för att visa, ange, ändra eller lägga till i sökvägen.
Innan du startar felsökningsprogrammet använder du miljövariablerna
_NT_SYMBOL_PATHoch_NT_ALT_SYMBOL_PATHför att ange sökvägen. Symbolsökvägen skapas genom att_NT_SYMBOL_PATHläggs till efter_NT_ALT_SYMBOL_PATH. Vanligtvis anger du sökvägen via_NT_SYMBOL_PATH. Men du kanske vill använda_NT_ALT_SYMBOL_PATHför att åsidosätta de här inställningarna i särskilda fall, till exempel om du har privata versioner av delade symbolfiler. Om du försöker lägga till en ogiltig katalog via dessa miljövariabler ignorerar felsökningsprogrammet den här katalogen.När du startar felsökningsprogrammet använder du kommandoradsalternativet -y för att ange sökvägen.
I endast WinDbg, använd Kommandot | Filsökväg för symboler eller tryck
CTRL+Sför att visa, ange, ändra eller lägga till i sökvägen.
Om du använder kommandoradsalternativet -sinsignorerar felsökningsprogrammet miljövariabeln för symbolsökväg.
Felsökning
Använd !sym noisy eller -nWinDbg Command-Line Alternativ för att visa ytterligare information när symboler läses in. Ytterligare felsökningsstrategier finns i Verifiera symboler.