Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A SymChk alapszintaxisa a következő:
symchk [/r] FileNames /s SymbolPath
A FileNames egy vagy több olyan programfájlt határoz meg, amelynek szimbólumára szükség van. Ha a FileNames egy könyvtár, és az /r jelzőt használja, a rendszer rekurzívan vizsgálja meg ezt a könyvtárat, és a SymChk megpróbálja megtalálni a könyvtárfa összes programfájljának szimbólumait. A SymbolPath megadja, hogy a SymChk hol keres szimbólumokat.
Több parancssori lehetőség is van. A teljes listaelemért tekintse meg a SymChk Command-Line Beállításai című témakört.
Symchk beszerzése
A Symchk, más hibakereső eszközökhöz hasonlóan, a hibakereső csomag részeként kerül forgalomba. További információ: Hibakeresési eszközök Windows.
A hibakeresési eszközök telepítése után a Symchk elérhető ebben a könyvtárban a 64 bites Windowshoz.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Használati példa
A megadott szimbólum elérési útja tetszőleges számú helyi könyvtárat, UNC-könyvtárat vagy szimbólumkiszolgálót tartalmazhat. A helyi könyvtárak és az UNC könyvtárak nem keresnek rekurzívan. A rendszer csak a megadott könyvtárat és a végrehajtható bővítményen alapuló alkönyvtárat keresi. Például a lekérdezés
symchk thisdriver.sys /s G:\symbols
Megkeresi a G:\mysymbols és G:\mysymbols\sys mappákat.
A szimbólumkiszolgálót az alábbi szintaxisok egyikével adhatja meg a szimbólum elérési útjának részeként:
srv*DownstreamStore*\\Server\Share
srv*\\Server\Share
Ez nagyon hasonló a hibakereső szimbólumútvonalában történő szimbólumkiszolgáló használatához. Erről további információt a Szimbólumkiszolgálók és szimbólumtárolók használata című témakörben talál.
Ha egy alsóbb rétegbeli tároló van megadva, a SymChk másolatot készít a szimbólumkiszolgáló által talált összes érvényes szimbólumfájlról, és azokat az alsóbb rétegbeli tárolóba helyezi. A program csak a teljes egyezéseket tartalmazó szimbólumfájlokat másolja az alsóbb rétegbe.
A SymChk mindig az alsóbb rétegbeli tárolóban keres, mielőtt lekérdezi a szimbólumkiszolgálót. Ezért óvatosnak kell lennie egy alsóbb rétegbeli tároló használatával, amikor valaki más tartja karban a szimbólumtárolót. Ha egyszer futtatja a SymChk-et, és megtalálja a szimbólumfájlokat, azokat az alsóbb rétegbeli tárolóba másolja. Ha ezután újra futtatja a SymChk-et, miután ezek a fájlok módosultak vagy törölve lettek a szimbólumtárolóban, a SymChk nem fogja észrevenni ezt a tényt, mivel megtalálja, amit keres az alsóbb rétegbeli tárolóban, és nem keres tovább.
Jegyzet A SymChk mindig a SymSrv (Symsrv.dll) szimbólumkiszolgáló DLL-jét használja. A hibakeresők azonban a SymSrv-en kívül más szimbólumkiszolgálói DLL-t is választhatnak, ha van ilyen. (A SymSrv a Windows hibakeresési eszközei csomagban található szimbólumkiszolgáló.)
A SymChk használata annak meghatározásához, hogy a szimbólumok privátak vagy nyilvánosak-e
Annak megállapításához, hogy egy szimbólumfájl privát vagy nyilvános-e, használja a /v paramétert, hogy a SymChk részletes kimenetet jelenítsen meg. Tegyük fel, hogy MyApp.exe és a MyApp.pdb a c:\sym mappában található. Adja meg ezt a parancsot.
symchk /v C:\sym\MyApp.exe /s C:\sym**
Ha a MyApp.pdb privát szimbólumokat tartalmaz, a SymChk kimenete így néz ki.
[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
Ha a MyApp.pdb csak nyilvános szimbólumokat tartalmaz, a SymChk kimenete így néz ki.
[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
Ha korlátozni szeretné a keresést, hogy csak nyilvános szimbólumfájlokat találjon, használja az s lehetőséget az /s paraméterrel (/ss). Az alábbi parancs talál egyezést, ha a MyApp.pdb csak nyilvános szimbólumokat tartalmaz. Nem talál egyezést, ha a MyApp.pdb privát szimbólumokat tartalmaz.
symchk /v C:\sym\MyApp.exe /s C:\sym
További információ: Nyilvános és privát szimbólumok.
példák
Íme néhány példa. A Myapp.exeprogramhoz az alábbi parancs szimbólumokat keres:
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
Próbálkozzon újra egy másik szimbólumútvonallal:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
A keresés ezúttal sikeres volt. Ha a részletes beállítást nem használja, a SymChk csak azokat a fájlokat listázja, amelyekhez nem talált szimbólumokat. Ebben a példában tehát egyetlen fájl sem szerepel a listán. Megállapíthatja, hogy a keresés sikeres volt, mert most már egy fájl szerepel az "átadott" kategóriában, és egyik sem a "sikertelen" kategóriában.
A programfájl figyelmen kívül lesz hagyva, ha nem tartalmaz végrehajtható kódot. Sok erőforrásfájl ilyen típusú.
Ha az összes programfájl fájlnevét szeretné látni, a /v beállítással részletes kimenetet hozhat létre:
E:\debuggers> symchk /v F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: MyApp.exe PASSED
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Az alábbi parancs rengeteg Windows-szimbólumot keres egy szimbólumkiszolgálón. Számos lehetséges hibaüzenet érhető el:
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