Dela via


Sökväg för symboler för Windows-debuggning

Symbolsökvägen anger platser där Windows-felsökare, till exempel WinDbg, KD, CDB och NTST, letar efter symbolfiler. 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 den körbara filen skapades, 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\dll
  • C:\Dir1\dll
  • C:\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

Du bör cacha 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 lagras symboler som läses 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 symbolsökvägen lagras symboler som läses 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*symbolstore

    Om du inkluderar strängen srv*symbolstore i 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/symbols
    
  • Strängen srv*localsymbolcache*symbolstore

    Om du inkluderar strängen srv*localcache*symbolstore i 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/symbols och cachelagrat symbolerna i c:\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 lagras symboler som läses 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 symbolsökvägen lagras symboler som läses 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ökarens standardbeteende är att använda slö symbolinläsning, även kallad uppskjuten symbolinläsning. Den här typen av inläsning innebär att symboler inte läses in förrän de krävs.

När symbolsökvägen ändras, till exempel med hjälp av kommandot .sympath, läses alla inlästa moduler med exportsymboler upp på nytt.

Symboler för moduler med fullständiga PDB-symboler laddas in långsamt på nytt om den nya sökvägen inte längre inkluderar 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äses dessa symboler inte in 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 kan du välja 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 bara .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_PATH och _NT_ALT_SYMBOL_PATH för att ange sökvägen. Symbolsökvägen skapas genom att _NT_SYMBOL_PATH läggs till efter _NT_ALT_SYMBOL_PATH. Vanligtvis anges sökvägen via _NT_SYMBOL_PATH. Men du kanske vill använda _NT_ALT_SYMBOL_PATH fö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.

  • Endast i WinDbg kan du använda filen | Kommandot Sökväg eller tryck på CTRL+S fö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.

Se även

symboler

Advanced SymSrv använder

.sympath command

.symfix