Delen via


Symboolpad voor Windows-foutopsporingsprogramma's

Het symboolpad geeft locaties op waar Windows-foutopsporingsprogramma's, zoals WinDbg, KD, CDB en NTST, zoeken naar symboolbestanden. Zie Symbolenvoor meer informatie over symbolen en symboolbestanden.

Sommige compilers, waaronder Microsoft Visual Studio, plaatsen symboolbestanden in dezelfde map als de binaire bestanden. De symboolbestanden en de gecontroleerde binaire bestanden bevatten pad- en bestandsnaamgegevens, waarmee het foutopsporingsprogramma de symboolbestanden automatisch kan vinden. Als u fouten opssport in een gebruikersmodusproces op de computer waarop het uitvoerbare bestand is gebouwd en als de symboolbestanden zich op de oorspronkelijke locatie bevinden, kan het foutopsporingsprogramma de symboolbestanden vinden zonder dat u het symboolpad instelt.

In de meeste andere situaties moet u het symboolpad zo instellen dat deze verwijst naar de bestandslocaties van uw symbool.

(Assuming "Tip" refers to a gratuity) Fooi

Gebruik .symfix om een standaardpad in te stellen op de openbare microsoft-symboolserver die in veel situaties goed werkt.

Symboolpadsyntaxis

Het symboolpad van de debugger is een tekenreeks die bestaat uit meerdere paden, gescheiden door puntkomma's. Bijvoorbeeld C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.

Relatieve paden worden ondersteund. U moet echter vóór elk pad een stationsletter of een netwerkshare toevoegen, tenzij u altijd het foutopsporingsprogramma vanuit dezelfde map start. Netwerkshares worden ook ondersteund.

Voor elke map in het symboolpad zoekt de debugger in drie mappen. Als het symboolpad bijvoorbeeld C:\Dir1 bevat en het foutopsporingsprogramma zoekt naar symboolgegevens voor een DLL, zoekt het foutopsporingsprogramma naar symboolgegevens in de volgende mappen, vermeld in de volgorde:

  • C:\Dir1\symbols\dll
  • C:\Dir1\dll
  • C:\Dir1

Het foutopsporingsprogramma herhaalt dit proces vervolgens voor elke map in het symboolpad. Ten slotte zoekt het foutopsporingsprogramma in de huidige map en vervolgens in de huidige map met ..\dll eraan toegevoegd. Het foutopsporingsprogramma voegt ..\dll, ..\exeof ..\systoe, afhankelijk van de binaries die worden gedebugged.

Symboolbestanden hebben datum- en tijdstempels. De debugger zoekt altijd naar de symbolen die overeenkomen met het tijdstempel op de binaire bestanden die het aan het debuggen is. U hoeft zich geen zorgen te maken over het foutopsporingsprogramma dat de verkeerde symbolen gebruikt die het eerst in deze volgorde vindt. Zie Overeenkomende symboolnamenvoor meer informatie over antwoorden wanneer er geen symbolenbestanden beschikbaar zijn.

Een manier om het symboolpad in te stellen is door de .sympath commandin te voeren. Voor andere manieren om het symboolpad in te stellen, zie Het pad naar het symbool beheren verderop in dit onderwerp.

Symbolen lokaal cachen

U moet uw symbolen lokaal opslaan in de cache. Een manier om symbolen lokaal in de cache op te slaan, is door cache*; of cache*localsymbolcache;* op te nemen in uw symboolpad.

Als u de tekenreeks opneemt cache*; in het symboolpad, worden symbolen geladen vanaf een element dat rechts van deze tekenreeks wordt weergegeven, opgeslagen in de standaardmap voor symboolcache op de lokale computer. De volgende opdracht vertelt het foutopsporingsprogramma bijvoorbeeld om symbolen op te halen uit de netwerkshare met de naam \\someshare en de symbolen in de cache in de standaardlocatie op de lokale computer op te slaan.

.sympath cache*;\\someshare

Als u de tekenreeks cache*localsymbolcache; in uw symboolpad opneemt, worden symbolen die worden geladen vanuit een element dat rechts van deze tekenreeks wordt weergegeven, opgeslagen in de localsymbolcache map.

Met de volgende opdracht wordt bijvoorbeeld aan het foutopsporingsprogramma aangegeven dat symbolen van de netwerkshare worden opgehaald \\someshare en dat de symbolen in de c:\MySymbols map in de cache worden opgeslagen.

.sympath cache*C:\MySymbols;\\someshare

Een symboolserver gebruiken: srv*

Als u verbinding hebt met internet of een bedrijfsnetwerk, kunt u het beste toegang krijgen tot symbolen door een symboolserver te gebruiken, zoals de openbare openbare Microsoft-symboolserver. U kunt een symboolserver gebruiken met behulp van een van de volgende tekenreeksen in uw symboolpad.

  • De tekenreeks srv*

    Als u de tekenreeks srv* in uw symboolpad opneemt, gebruikt het foutopsporingsprogramma een symboolserver om symbolen op te halen uit het standaardsymboolarchief. De volgende opdracht vertelt het foutopsporingsprogramma bijvoorbeeld om symbolen op te halen uit het standaardsymboolarchief. Deze symbolen worden niet in de cache opgeslagen op de lokale computer.

    .sympath srv*
    
  • De tekenreeks srv*symbolstore

    Als u de tekenreeks srv*symbolstore in uw symboolpad opneemt, gebruikt de debugger een symboolserver om symbolen op te halen uit de -symbolstore. De volgende opdracht vertelt het foutopsporingsprogramma bijvoorbeeld om symbolen op te halen uit de Microsoft-symboolserver store. Deze symbolen worden niet in de cache opgeslagen op de lokale computer.

    .sympath srv*https://msdl.microsoft.com/download/symbols
    
  • De tekenreeks srv*localsymbolcache*symbolstore

    Als u de tekenreeks srv*localcache*symbolstore in uw symboolpad opneemt, gebruikt de debugger een symboolserver om symbolen op te halen uit de symboolopslag en slaat deze op in de cache in de lokale cache map. De volgende opdracht vertelt het foutopsporingsprogramma bijvoorbeeld om symbolen op te halen van de Microsoft-symboolserverhttps://msdl.microsoft.com/download/symbols en om de symbolen in c:\MyServerSymbolste cachen.

    .sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
    

Als u een map op uw computer hebt waar u symbolen handmatig plaatst, gebruikt u die map niet als de cache voor symbolen die zijn verkregen van een symboolserver. Gebruik in plaats daarvan twee afzonderlijke mappen. U kunt bijvoorbeeld handmatig symbolen in c:\MyRegularSymbols plaatsen en vervolgens c:\MyServerSymbols aanwijzen als een cache voor symbolen die zijn verkregen van een server. In het volgende voorbeeld wordt getoond hoe u beide mappen in uw symboolpad kunt specificeren.

.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

Zie Aangepaste symboolarchieven en symboolserversvoor meer informatie over symboolservers en symboolarchieven.

Combineer cache* en srv*

Als u de tekenreeks opneemt cache*; in het symboolpad, worden symbolen geladen vanaf een element dat rechts van deze tekenreeks wordt weergegeven, opgeslagen in de standaardmap voor symboolcache op de lokale computer. De volgende opdracht vertelt het foutopsporingsprogramma om symbolen te halen van de Microsoft-symboolserver en deze op te slaan in de standaard cachemap voor symbolen.

.sympath cache*;srv*https://msdl.microsoft.com/download/symbols

Als u de tekenreeks cache*localsymbolcache; in uw symboolpad opneemt, worden symbolen die worden geladen vanuit een element dat rechts van deze tekenreeks wordt weergegeven, opgeslagen in de localsymbolcache map.

Met de volgende opdracht wordt bijvoorbeeld aan het foutopsporingsprogramma aangegeven dat symbolen worden opgehaald uit de Microsoft-symboolserver en dat de symbolen in de map c:\MySymbols worden opgeslagen en gecachet.

.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols

AgeStore gebruiken om de cachegrootte te verkleinen

U kunt het hulpprogramma AgeStore gebruiken om in de cache opgeslagen bestanden te verwijderen die ouder zijn dan een opgegeven datum, of om voldoende oude bestanden te verwijderen, zodat de resulterende cachegrootte kleiner is dan een opgegeven hoeveelheid. Deze opschoning van cachebestanden is handig als uw downstreamopslag te groot wordt.

Luie symbool laden

Het standaardgedrag van de debugger is het gebruik van lui symbool laden, ook wel bekend als uitgesteld symbool laden. Dit soort laden betekent dat symbolen pas worden geladen als ze nodig zijn.

Wanneer het symboolpad wordt gewijzigd, bijvoorbeeld met behulp van de opdracht .sympath, worden alle geladen modules met exportsymbolen lui opnieuw geladen.

Symbolen van modules met volledige PDB-symbolen worden lazily opnieuw geladen als het nieuwe pad niet langer het oorspronkelijke pad bevat dat is gebruikt om de PDB-symbolen te laden. Als het nieuwe pad nog steeds het oorspronkelijke pad naar het PDB-symboolbestand bevat, worden deze symbolen niet lui opnieuw geladen.

U kunt het laden van luie symbolen in CDB en KD uitschakelen met behulp van de opdrachtregeloptie -s. U kunt het laden van symbolen ook afdwingen door de opdracht te gebruiken of door de opdracht .reload module samen met de optie /f te gebruiken.

Azure DevOps Services-artefacten

Er is een symboolserver beschikbaar met Azure Artifacts in Azure DevOps Services. Zie Fouten opsporen met symbolen in WinDbg (Azure Artifacts)voor meer informatie over het werken met Azure Artifacts in WinDbg. Zie Overzicht van symbolen (Azure Artifacts)voor algemene informatie over door Azure gegenereerde symbolen.

Het pad naar het symbool bepalen

Als u het pad naar het symbool wilt beheren, kunt u een van de volgende methoden selecteren:

  • Gebruik de opdracht .symfix set symbol store path om een standaardpad naar de openbare Microsoft-symboolserver in te stellen, wat in veel situaties goed werkt. Als u een lokale cache wilt instellen, typt u .symfix C:\MyCache.

  • Gebruik de opdracht .sympath om het pad weer te geven, in te stellen, te wijzigen of toe te voegen.

  • Voordat u het foutopsporingsprogramma start, gebruikt u de _NT_SYMBOL_PATH en _NT_ALT_SYMBOL_PATHomgevingsvariabelen om het pad in te stellen. Het symboolpad wordt gemaakt door _NT_SYMBOL_PATH toe te voegen na _NT_ALT_SYMBOL_PATH. Normaal gesproken wordt het pad ingesteld via de _NT_SYMBOL_PATH. Mogelijk wilt u echter _NT_ALT_SYMBOL_PATH gebruiken om deze instellingen in speciale gevallen te overschrijven, bijvoorbeeld als u persoonlijke versies van gedeelde symboolbestanden hebt. Als u probeert een ongeldige map toe te voegen via deze omgevingsvariabelen, negeert het foutopsporingsprogramma deze map.

  • Wanneer u het foutopsporingsprogramma start, gebruikt u de -y-opdrachtregeloptie om het pad in te stellen.

  • Alleen in WinDbg kunt u het commando Bestand | Symboolbestandspad gebruiken of op CTRL+S drukken om het pad weer te geven, in te stellen, te wijzigen of eraan toe te voegen.

Als u de opdrachtregeloptie -sinsgebruikt, negeert het foutopsporingsprogramma de omgevingsvariabele voor het symboolpad.

Probleemoplossing

Gebruik !sym luidruchtige of de -nWinDbg Command-Line Option om extra details weer te geven wanneer symbolen worden geladen. Voor aanvullende probleemoplossingsstrategieën, zie Symbolen controleren.

Zie ook

symbolen

Advanced SymSrv gebruiken

.sympath command

.symfix