Not
Å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.
Den grundläggande syntaxen för SymChk är följande:
symchk [/r] FileNames /s SymbolPath
FileNames anger en eller flera programfiler vars symboler behövs. Om FileNames är en katalog och flaggan /r används, utforskas den här katalogen rekursivt och SymChk försöker hitta symboler för alla programfiler i det här katalogträdet. SymbolPath- anger var SymChk ska söka efter symboler.
Det finns många fler kommandoradsalternativ. En fullständig lista finns i SymChk Command-Line Options.
Hämta symchk
Symchk, liksom andra felsökningsverktyg, levereras som en del av felsökningsprogrammet. Mer information finns i Felsökningsverktyg för Windows.
När felsökningsverktygen har installerats är symchk tillgängligt i den här katalogen för 64-bitars Windows.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Exempel på användning
Den angivna symbolsökvägen kan innehålla valfritt antal lokala kataloger, UNC-kataloger eller symbolservrar. Lokala kataloger och UNC-kataloger söks inte rekursivt. Endast den angivna katalogen och en underkatalog som är baserad på den körbara filens tillägg genomsöks. Till exempel frågan
symchk thisdriver.sys /s G:\symbols
söker efter G:\mysymbols och G:\mysymbols\sys.
Du kan ange en symbolserver med någon av följande syntaxer som en del av symbolsökvägen:
srv*DownstreamStore*\\Server\Share
srv*\\Server\Share
Detta liknar mycket att använda en symbolserver i felsökningsprogrammets symbolsökväg. Mer information om detta finns i Använda symbolservrar och symbolbutiker.
Om ett underordnat arkiv anges gör SymChk kopior av alla giltiga symbolfiler som hittades av symbolservern och placerar dem i det underordnade arkivet. Endast symbolfiler som är fullständiga matchningar kopieras nedströms.
SymChk söker alltid i det nedströms lagret innan att fråga symbolservern. Därför bör du vara försiktig med att använda ett nedströmslager när någon annan underhåller symbolarkivet. Om du kör SymChk en gång och hittar symbolfiler kopieras de till det underordnade arkivet. Om du sedan kör SymChk igen efter att dessa filer har ändrats eller tagits bort i symbolarkivet, kommer SymChk inte att märka detta faktum, eftersom det kommer att hitta vad det letar efter i nedströmsarkivet och inte leta längre.
Note SymChk använder alltid SymSrv (Symsrv.dll) som sin symbolserver-DLL. Å andra sidan kan felsökarna välja en annan symbolserver-DLL än SymSrv om en är tillgänglig. (SymSrv är symbolservern som ingår i felsökningsverktygen för Windows-paketet.)
Använda SymChk för att avgöra om symboler är privata eller offentliga
Om du vill avgöra om en symbolfil är privat eller offentlig använder du parametern /v så att SymChk visar utförliga utdata. Anta att MyApp.exe och MyApp.pdb finns i mappen c:\sym. Ange det här kommandot.
symchk /v C:\sym\MyApp.exe /s C:\sym**
Om MyApp.pdb innehåller privata symboler ser utdata från SymChk ut så här.
[SYMCHK] Searching for symbols to c:\sym\MyApp.exe in path c:\sym
...
DBGHELP: MyApp - private symbols & lines
c:\sym\MyApp.pdb
...
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Om MyApp.pdb endast innehåller offentliga symboler ser utdata från SymChk ut så här.
[SYMCHK] Searching for symbols to c:\sym\MyApp.exe in path c:\sym
...
DBGHELP: MyApp - public symbols
c:\sym\MyApp.pdb
...
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Om du vill begränsa sökningen så att den bara hittar offentliga symbolfiler använder du alternativet s med parametern /s (/ss). Följande kommando hittar en matchning om MyApp.pdb endast innehåller offentliga symboler. Den hittar ingen matchning om MyApp.pdb innehåller privata symboler.
symchk /v C:\sym\MyApp.exe /s C:\sym
För mer information, se offentliga och privata symboler.
exempel
Här följer några exempel. Följande kommando söker efter symboler för programmet Myapp.exe:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\applications
SYMCHK: Myapp.exe FAILED - Myapp.pdb is missing
SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 0
Du kan försöka igen med en annan symbolsökväg:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Sökningen lyckades den här gången. Om det utförliga alternativet inte används listar SymChk endast filer som det inte kunde hitta symboler för. Så i det här exemplet listades inga filer. Du kan se att sökningen lyckades eftersom det nu finns en fil i kategorin "godkänd" och ingen i kategorin "misslyckades".
En programfil ignoreras om den inte innehåller någon körbar kod. Många resursfiler är av den här typen.
Om du föredrar att se filnamnen för alla programfiler kan du använda alternativet /v för att generera utförliga utdata:
E:\debuggers> symchk /v F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: MyApp.exe PASSED
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Följande kommando söker efter ett stort antal Windows-symboler på en symbolserver. Det finns en mängd olika möjliga felmeddelanden:
E:\debuggers> symchk /r C:\windows\system32 /s srv*\\manysymbols\windows
SYMCHK: msisam11.dll FAILED - MSISAM11.pdb is missing
SYMCHK: msuni11.dll FAILED - msuni11link.pdb is missing
SYMCHK: msdxm.ocx FAILED - Image is split correctly, but msdxm.dbg i
s missing
SYMCHK: expsrv.dll FAILED - Checksum doesn't match with expsrv.DBG
SYMCHK: imeshare.dll FAILED - imeshare.opt.pdb is missing
SYMCHK: ir32_32.dll FAILED - Built with no debugging information
SYMCHK: author.dll FAILED - rpctest.pdb is missing
SYMCHK: msvcrt40.dll FAILED - Built with no debugging information
......
SYMCHK: FAILED files = 211
SYMCHK: PASSED + IGNORED files = 4809