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 DbgHelp-kódtár a szimbólumkeresési útvonallal keresi meg a hibakeresési szimbólumokat (.pdb és .dbg fájlok). A keresési útvonal egy vagy több, pontosvesszővel elválasztott elérési útelemből áll.
Keresési útvonalak megadása
Ha meg szeretné adni, hogy a szimbólumkezelő hol keres lemezkönyvtárakat a szimbólumfájlokban, hívja meg a SymSetSearchPath függvényt. Másik lehetőségként megadhat egy szimbólumkeresési útvonalat a SymInitializefüggvényUserSearchPath paraméterében.
A SymInitializeUserSearchPath paramétere és a SymSetSearchPath SearchPath paramétere egy null értékű sztringre mutat, amely pontosvesszővel elválasztott elérési utat vagy elérési utak sorozatát határozza meg. A szimbólumkezelő ezeket az útvonalakat használja a szimbólumfájlok kereséséhez. Ha ez a paraméter NULL, a szimbólumkezelő abban a könyvtárban keres, amely tartalmazza azt a modult, amelyben a szimbólumok keresése folyamatban van. Ellenkező esetben, ha ez a paraméter nemNULL értékként van megadva, a szimbólumkezelő először megkeresi az alkalmazás által megadott elérési utakat a modulkönyvtárban való keresés előtt. Ha beállítja a _NT_SYMBOL_PATH vagy _NT_ALT_SYMBOL_PATH környezeti változót, a szimbólumkezelő a következő sorrendben keres szimbólumfájlokat:
- A _NT_SYMBOL_PATH környezeti változó.
- A _NT_ALT_SYMBOL_PATH környezeti változó.
- A megfelelő modult tartalmazó könyvtár.
A keresési útvonalak lekéréséhez hívja meg a SymGetSearchPath függvényt.
A programadatbázis -fájlok (.pdb) keresési útvonala eltér a hibakeresési (.dbg) fájlok elérési úttól. Az algoritmust a szimbólumtár funkciói határozzák meg. A Microsoft Visual C/C++ alapértelmezés szerint microsoftos formátumszimbólumokat hoz létre, eltávolítja őket a rendszerképből, és egy külön .pdb fájlba helyezi őket. A .pdb fájl általában a végrehajtható lemezképet tartalmazó könyvtárban található. A Visual C/C++ beágyazza a .pdb fájl abszolút elérési útját a végrehajtható képbe. Ha a szimbólumkezelő nem találja a .pdb fájlt ezen a helyen, vagy ha a .pdb fájlt egy másik könyvtárba helyezték át, a szimbólumkezelő a .dbg fájlok keresési útvonalával fogja megkeresni a .pdb fájlt.
Útvonalelem-típusok
Háromféle elérésiút-elem létezik.
Standard elérési útelem
A standard elérési útelemek kereséséhez az elérési út elem által megadott könyvtár gyökerét kell keresni. A szimbólumkezelő a "szimbólumok" alkönyvtárában is megjelenik, amely megfelel a keresett modul fájlkiterjesztésének. Ez általában "dll", "exe" vagy "sys". Végül egy "szimbólumok" nevű alkönyvtárban néz ki, amelynek neve megegyezik a bővítmény nevével. Ha például a szimbólum elérési útja "c:\mySymbols" elem, és a keresett fájl "boo.dll", akkor a rendszer a következő könyvtárakat keresi.
- c:\mySymbols
- c:\mySymbols\dll
- c:\mySymbols\symbols\dll
A szimbólumkezelő ezzel a logikával keres minden olyan elérési útelemet, amely nem felel meg az szimbólumkiszolgálói vagy gyorsítótár- (az alábbiakban ismertetjük).
Szimbólumkiszolgáló elérési útja elem
A szimbólumkiszolgáló útvonalelem speciális technológiát használ, amely képes megtalálni a kérdéses modulhoz pontosan illeszkedő szimbólumot. További részletekért lásd: A SymSrv használata.
A szimbólumkezelő az elérési út elemet szimbólumkiszolgálóként kezeli, ha az "srv*" szöveggel kezdődik.
Jegyzet
Ha az "srv*" szöveg nincs megadva, de a tényleges elérési útelem egy szimbólumkiszolgáló-tároló, akkor a szimbólumkezelő úgy fog működni, mintha "srv*" lett volna megadva. A szimbólumkezelő úgy határozza meg ezt a meghatározást, hogy megkeresi a megadott elérési út gyökérkönyvtárában található "pingme.txt" nevű fájlt.
Gyorsítótár elérési útja elem
A gyorsítótár elérési út eleme a szimbólumkiszolgáló elérési útelemének változata.
Ez a könyvtár a többi szimbólumkiszolgálóhoz hasonlóan keresve van. Ha azonban a szimbólum nem található itt, és a szimbólum elérési útjának láncától távolabb található elérésiút-elemben található, akkor a rendszer a szimbólumot az elemben megadott szimbólumkiszolgálón másolja és tárolja.
A szimbólumkezelő gyorsítótárelemként kezeli az elérési utat, ha a "cache*" szöveggel kezdődik. A "c:\myCache" gyorsítótár megadásához használja a "cache*c:\myCache" jelútvonal-elemét.
Példa keresési útvonalra
Ennek működéséhez állítsa be ezt a keresési útvonalat.
cache*c:\myCache;srv*\\symbols\symbols
Az alábbiakban a szimbólumkezelő részletes kimenetét mutatjuk be az ntdll.pdb keresésekor, a fenti keresési útvonal használatával.
DBGHELP: .\ntdll.pdb - file not found
DBGHELP: .\dll\ntdll.pdb - file not found
DBGHELP: .\symbols\dll\ntdll.pdb - file not found
SYMSRV: c:\myCache\ntdll.pdb\0F7FCF88442F4B0E9FB51DC4A754D9DE2\ntdll.pdb not found
SYMSRV: ntdll.pdb from \\symbols\symbols: 10497024 bytes - copied
DBGHELP: c:\myCache\ntdll.pdb\0F7FCF88442F4B0E9FB51DC4A754D9DE2\ntdll.pdb already cached
DBGHELP: ntdll - private symbols & lines
c:\myCache\ntdll.pdb\0F7FCF88442F4B0E9FB51DC4A754D9DE2\ntdll.pdb
A kimenet első három sora a szimbólumkezelőt jeleníti meg, amely a .első elérési útját dolgozza fel. Ez egy szabványos elérési útelem.
A negyedik sor a szimbólumkezelőt jeleníti meg a szimbólumkiszolgáló használatával, hogy megkeresse a fájlt a cache*c:\myCache második elérési útjának elemében, amely egy gyorsítótár elérési útja elem.
Az ötödik sor azt mutatja, hogy a fájl a srv*\\symbols\symbolsharmadik elérési útjának elemében található, amely egy szimbólumkiszolgáló elérési útja elem.
A hatodik sor azt mutatja, hogy a fájl át lesz másolva a gyorsítótárba.
Az utolsó két sor, amelyet a fájl megnyit a gyorsítótárból.