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 SymStore (symstore.exe) szimbólumtárolók létrehozására szolgáló eszköz. A Hibakeresési eszközök Windows csomagban található.
A SymStore a szimbólumokat olyan formátumban tárolja, amely lehetővé teszi a hibakereső számára, hogy megkeresse a szimbólumokat a kép időbélyege és mérete (.dbg vagy végrehajtható fájl esetén), illetve aláírás és kor alapján (.pdb fájl esetén). A szimbólumtároló előnye a hagyományos szimbólumtároló formátummal szemben, hogy minden szimbólum tárolható vagy hivatkozható ugyanazon a kiszolgálón, és a hibakereső lekérheti anélkül, hogy előzetesen tudta, hogy melyik termék tartalmazza a megfelelő szimbólumot.
Vegye figyelembe, hogy a .pdb szimbólumfájlok több verziója (például nyilvános és privát verziók) nem tárolhatók ugyanazon a kiszolgálón, mert mindegyik azonos aláírást és kort tartalmaz.
SymStore-tranzakciók
A SymStore minden hívása tranzakcióként lesz rögzítve. Kétféle tranzakciótípus létezik: hozzáadás és törlés.
A szimbólumtároló létrehozásakor a rendszer létrehoz egy "000admin" nevű könyvtárat a kiszolgáló gyökerében. A 000admin könyvtár minden tranzakcióhoz egy fájlt tartalmaz, valamint a naplófájlokat Server.txt és History.txt. A Server.txt fájl tartalmazza a kiszolgálón jelenleg található összes tranzakció listáját. A History.txt fájl az összes tranzakció időrendi előzményeit tartalmazza.
Minden alkalommal, amikor a SymStore tárolja vagy eltávolítja a szimbólumfájlokat, létrejön egy új tranzakciószám. Ezután egy fájl, amelynek a neve ez a tranzakciószám, 000adminban jön létre. Ez a fájl tartalmazza a szimbólumtárolóhoz a tranzakció során hozzáadott összes fájlt vagy mutatót. Ha töröl egy tranzakciót, a SymStore beolvassa a tranzakciós fájlját annak meghatározásához, hogy mely fájlokat és mutatókat kell törölnie.
A hozzáadási és a del törlési lehetőségek határozzák meg, hogy hozzáadást vagy törléses tranzakciót kell-e végrehajtani. Ha a /p lehetőséget hozzáadja egy hozzáadási művelethez, az azt határozza meg, hogy hozzá kell adni egy mutatót; Ha kihagyja a /p beállítást, az azt határozza meg, hogy a tényleges szimbólumfájlt hozzá kell adni.
A szimbólumtárolót két külön szakaszban is létrehozhatja. Az első szakaszban a SymStore-t használja a /x beállítással indexfájl létrehozásához. A második szakaszban a SymStore-t használja az /y beállítással az indexfájl adataiból származó fájlok vagy mutatók tényleges tárolásához.
Ez számos okból lehet hasznos technika. Ez lehetővé teszi például, hogy a szimbólumtároló könnyen újra létrejönjön, ha az tároló valamilyen módon elveszett, feltéve, hogy az indexfájl továbbra is létezik. Vagy lehet, hogy a szimbólumfájlokat tartalmazó számítógép lassú hálózati kapcsolattal rendelkezik ahhoz a számítógéphez, amelyen a szimbólumtároló létrejön. Ebben az esetben létrehozhatja az indexfájlt ugyanazon a gépen, mint a szimbólumfájlok, átviheti az indexfájlt a második gépre, majd létrehozhatja a tárolót a második gépen.
Az összes SymStore-paraméter teljes listájáért tekintse meg SymStore Command-Line Beállításokcímű témakört.
Jegyzet
A SymStore nem támogatja több felhasználó egyidejű tranzakcióit. Javasoljuk, hogy egy felhasználó legyen a szimbólumtároló rendszergazdája, és legyen felelős minden hozzáadás és törlés tranzakcióért.
Tranzakciós példák
Íme két példa arra, hogy a SymStore szimbólummutatókat ad hozzá a Windows Server 2003 3790-es buildéhez a \\sampledir\symsrv fájlhoz:
symstore add /r /p /f \\BuildServer\BuildShare\3790free\symbols\*.*
/s \\sampledir\symsrv /t "Windows Server 2003" /v "Build 3790 x86 free"
/c "Sample add"
symstore add /r /p /f \\BuildServer\BuildShare\3790Chk\symbols\*.*
/s \\sampledir\symsrv /t "Windows Server 2003" /v "Build 3790 x86 checked"
/c "Sample add"
A következő példában a SymStore hozzáadja egy alkalmazásprojekt tényleges szimbólumfájljait a \\largeapp\appserver\bins fájlhoz a \\testdir\symsrv fájlhoz:
symstore add /r /f \\largeapp\appserver\bins\*.* /s \\testdir\symsrv
/t "Large Application" /v "Build 432" /c "Sample add"
Íme egy példa egy indexfájl használatára. Először a SymStore létrehoz egy indexfájlt a \\largeapp\appserver\bins\ szimbólumfájlok gyűjteménye alapján. Ebben az esetben az indexfájl egy harmadik számítógépre, a \\hubserver\hubshare-re kerül. A /g beállítással megadhatja, hogy a "\\largeapp\appserver" fájlelőtag a jövőben megváltozhat:
symstore add /r /p /g \\largeapp\appserver /f
\\largeapp\appserver\bins\*.*
/x \\hubserver\hubshare\myindex.txt
Tegyük fel, hogy az összes szimbólumfájlt áthelyezi a (\\largeapp\appserver) gépről, és elhelyezi őket a \\myarchive\appserver kiszolgálón. Ezután az indexfájl \\hubserver\hubshare\myindex.txt alapján a következőképpen hozhatja létre a szimbólumtárolót:
symstore add /y \\hubserver\hubshare\myindex.txt
/g \\myarchive\appserver /s \\sampledir\symsrv /p
/t "Large Application" /v "Build 432" /c "Sample Add from Index"
Végül íme egy példa a SymStore-ra egy korábbi tranzakció által hozzáadott fájl törlésére. A tranzakcióazonosító meghatározásának (ebben az esetben a 0000000096) meghatározásához tekintse meg a következő szakaszt.
symstore del /i 0000000096 /s \\sampledir\symsrv
Tömörített fájlok
A SymStore kétféleképpen használható tömörített fájlokkal.
- Használja a SymStore-t a /p beállítással a szimbólumfájlok mutatóinak tárolásához. A SymStore befejeződése után tömörítse azokat a fájlokat, amelyekre a mutatók hivatkoznak.
- Indexfájl létrehozásához használja a SymStore-t az /x beállítással. A SymStore befejezése után tömörítse az indexfájlban felsorolt fájlokat. Ezután használja a SymStore-t a /y beállítással (és ha szeretné, a /p beállítással) a szimbólumtárolóban lévő fájlok vagy mutatók tárolásához. (A SymStore-nak nem kell kibontania a fájlokat a művelet végrehajtásához.)
A szimbólumkiszolgáló felelős a fájlok szükség esetén történő kibontásáért.
Ha a SymSrv-et használja szimbólumkiszolgálóként, a tömörítést a Microsoft Windows Szoftverfejlesztői Készlettel (SDK) elosztott compress.exe eszközzel kell elvégezni. A tömörített fájloknak aláhúzásjelnek kell lennie a fájlkiterjesztések utolsó karaktereként (például module1.pd_ vagy module2.db_). További információ: SymSrvhasználata.
A server.txt és history.txt fájlok
Tranzakció hozzáadásakor a rendszer több információelemet is hozzáad a server.txt és history.txt a jövőbeli keresési képességekhez. Az alábbi példa egy sorra a server.txt-ban és a history.txt-ben egy hozzáadási tranzakcióhoz.
0000000096,add,ptr,10/09/99,00:08:32,Windows XP,x86 fre 1.156c-RTM-2,Added from \\mybuilds\symbols,
Ez egy vesszővel tagolt vonal. A mezők a következőképpen vannak definiálva.
| Mező | Leírás |
|---|---|
| 0000000096 | Tranzakcióazonosító száma a SymStore által létrehozott módon. |
| hozzáad | Tranzakció típusa. Ez a mező lehet hozzáad vagy töröl. |
| ptr | Fájlok vagy mutatók hozzáadása. Ez a mező lehet fájl vagy ptr. |
| 10/09/99 | A tranzakció bekövetkezésének dátuma. |
| 00:08:32 | A tranzakció indításának időpontja. |
| Windows XP | Termék. |
| x86 fre | Verzió (nem kötelező). |
| Hozzáadva innen: | Megjegyzés (nem kötelező) |
| Használatlan | (Későbbi használatra fenntartva.) |
Íme néhány mintasor a tranzakciós fájlból 0000000096. Minden sor rögzíti a könyvtárat és a könyvtárhoz hozzáadott fájl vagy mutató helyét.
canon800.dbg\35d9fd51b000,\\mybuilds\symbols\sp4\dll\canon800.dbg
canonlbp.dbg\35d9fd521c000,\\mybuilds\symbols\sp4\dll\canonlbp.dbg
certadm.dbg\352bf2f48000,\\mybuilds\symbols\sp4\dll\certadm.dbg
certcli.dbg\352bf2f1b000,\\mybuilds\symbols\sp4\dll\certcli.dbg
certcrpt.dbg\352bf04911000,\\mybuilds\symbols\sp4\dll\certcrpt.dbg
certenc.dbg\352bf2f7f000,\\mybuilds\symbols\sp4\dll\certenc.dbg
Ha del tranzakciót használ az eredeti hozzáadási tranzakciók visszavonásához, ezek a sorok törlődnek a server.txt-ből, és a következő sor hozzáadódik a history.txt-höz:
0000000105,del,0000000096
A törlési tranzakció mezői a következőképpen vannak definiálva.
| Mező | Leírás |
|---|---|
| 0000000105 | Tranzakcióazonosító száma a SymStore által létrehozott módon. |
| Del | Tranzakció típusa. Ez a mező lehet hozzáad vagy töröl. |
| 0000000096 | Törölt tranzakció. |
Szimbólumtároló formátuma
A SymStore magát a fájlrendszert használja adatbázisként. Létrehoz egy nagy könyvtárfát, amelynek könyvtárnevei olyan dolgokon alapulnak, mint a szimbólumfájl időbélyegei, az aláírások, az életkor és más adatok.
Ha például több különböző acpi.dbg fájlt adtak hozzá a kiszolgálóhoz, a könyvtárak a következőképpen nézhetnek ki:
Directory of \\mybuilds\symsrv\acpi.dbg
10/06/1999 05:46p <DIR> .
10/06/1999 05:46p <DIR> ..
10/04/1999 01:54p <DIR> 37cdb03962040
10/04/1999 01:49p <DIR> 37cdb04027740
10/04/1999 12:56p <DIR> 37e3eb1c62060
10/04/1999 12:51p <DIR> 37e3ebcc27760
10/04/1999 12:45p <DIR> 37ed151662060
10/04/1999 12:39p <DIR> 37ed15dd27760
10/04/1999 11:33a <DIR> 37f03ce962020
10/04/1999 11:21a <DIR> 37f03cf7277c0
10/06/1999 05:38p <DIR> 37fa7f00277e0
10/06/1999 05:46p <DIR> 37fa7f01620a0
Ebben a példában az acpi.dbg szimbólumfájl keresési útvonala a következőhöz hasonló lehet: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
A keresési könyvtárban három fájl lehet:
- Ha a fájlt tárolták, akkor az acpi.dbg ott fog létezni.
- Ha egy mutatót tároltak, akkor létezik egy file.ptr nevű fájl, amely tartalmazza a tényleges szimbólumfájl elérési útját.
- Egy refs.ptr nevű fájl, amely tartalmazza az acpi.dbg összes aktuális helyének listáját, ezzel az időbélyeggel és képmérettel, amelyek jelenleg hozzá vannak adva a szimbólumtárhoz.
A \\mybuilds\symsrv\acpi.dbg\37cdb03962040 könyvtárlista megjelenítése a következőket adja:
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
A file.ptr fájl a "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg" szöveges sztringet tartalmazza. Mivel ebben a könyvtárban nincs acpi.dbg nevű fájl, a hibakereső megpróbálja megtalálni a fájlt a következő helyen: \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg.
A refs.ptr tartalmát csak a SymStore használja, a hibakereső nem. Ez a fájl a könyvtárban végrehajtott összes tranzakció rekordját tartalmazza. A refs.ptr mintavonala a következő lehet:
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
Ez azt mutatja, hogy a \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg mutató a "0000000026" tranzakcióval lett hozzáadva.
Egyes szimbólumfájlok állandóak maradnak különböző termékeken, buildeken vagy egy adott terméken keresztül. Erre példa az msvcrt.pdb fájl. A \\mybuilds\symsrv\msvcrt.pdb könyvtárban látható, hogy az msvcrt.pdb fájlnak csak két verziója lett hozzáadva a szimbólumkiszolgálóhoz:
Directory of \\mybuilds\symsrv\msvcrt.pdb
10/06/1999 05:37p <DIR> .
10/06/1999 05:37p <DIR> ..
10/04/1999 11:19a <DIR> 37a8f40e2
10/06/1999 05:37p <DIR> 37f2c2272
A \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 könyvtár megjelenítése azonban azt mutatja, hogy a refs.ptr-ban több mutató is van.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
A \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr tartalma a következő:
0000000001,ptr,\\mybuilds\symbols\x86\2137\symbols\dll\msvcrt.pdb
0000000002,ptr,\\mybuilds\symbols\x86\2137.chk\symbols\dll\msvcrt.pdb
0000000003,ptr,\\mybuilds\symbols\x86\2138\symbols\dll\msvcrt.pdb
0000000004,ptr,\\mybuilds\symbols\x86\2138.chk\symbols\dll\msvcrt.pdb
0000000005,ptr,\\mybuilds\symbols\x86\2139\symbols\dll\msvcrt.pdb
0000000006,ptr,\\mybuilds\symbols\x86\2139.chk\symbols\dll\msvcrt.pdb
0000000007,ptr,\\mybuilds\symbols\x86\2140\symbols\dll\msvcrt.pdb
0000000008,ptr,\\mybuilds\symbols\x86\2140.chk\symbols\dll\msvcrt.pdb
0000000009,ptr,\\mybuilds\symbols\x86\2136\symbols\dll\msvcrt.pdb
0000000010,ptr,\\mybuilds\symbols\x86\2136.chk\symbols\dll\msvcrt.pdb
0000000011,ptr,\\mybuilds\symbols\x86\2135\symbols\dll\msvcrt.pdb
0000000012,ptr,\\mybuilds\symbols\x86\2135.chk\symbols\dll\msvcrt.pdb
0000000013,ptr,\\mybuilds\symbols\x86\2134\symbols\dll\msvcrt.pdb
0000000014,ptr,\\mybuilds\symbols\x86\2134.chk\symbols\dll\msvcrt.pdb
0000000015,ptr,\\mybuilds\symbols\x86\2133\symbols\dll\msvcrt.pdb
0000000016,ptr,\\mybuilds\symbols\x86\2133.chk\symbols\dll\msvcrt.pdb
0000000017,ptr,\\mybuilds\symbols\x86\2132\symbols\dll\msvcrt.pdb
0000000018,ptr,\\mybuilds\symbols\x86\2132.chk\symbols\dll\msvcrt.pdb
0000000019,ptr,\\mybuilds\symbols\x86\2131\symbols\dll\msvcrt.pdb
0000000020,ptr,\\mybuilds\symbols\x86\2131.chk\symbols\dll\msvcrt.pdb
0000000021,ptr,\\mybuilds\symbols\x86\2130\symbols\dll\msvcrt.pdb
0000000022,ptr,\\mybuilds\symbols\x86\2130.chk\symbols\dll\msvcrt.pdb
0000000023,ptr,\\mybuilds\symbols\x86\2129\symbols\dll\msvcrt.pdb
0000000024,ptr,\\mybuilds\symbols\x86\2129.chk\symbols\dll\msvcrt.pdb
0000000025,ptr,\\mybuilds\symbols\x86\2128\symbols\dll\msvcrt.pdb
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\dll\msvcrt.pdb
0000000027,ptr,\\mybuilds\symbols\x86\2141\symbols\dll\msvcrt.pdb
0000000028,ptr,\\mybuilds\symbols\x86\2141.chk\symbols\dll\msvcrt.pdb
0000000029,ptr,\\mybuilds\symbols\x86\2142\symbols\dll\msvcrt.pdb
0000000030,ptr,\\mybuilds\symbols\x86\2142.chk\symbols\dll\msvcrt.pdb
Ez azt mutatja, hogy ugyanazt az msvcrt.pdb fájlt használták a \\mybuilds\symsrv fájlban tárolt szimbólumok több buildjeihez.
Íme egy példa egy könyvtárra, amely fájl- és mutatóbeadások keverékét tartalmazza:
Directory of E:\symsrv\dbghelp.dbg\38039ff439000
10/12/1999 01:54p 141,232 dbghelp.dbg
10/13/1999 04:57p 49 file.ptr
10/13/1999 04:57p 306 refs.ptr
Ebben az esetben a refs.ptr tartalma a következő:
0000000043,file,e:\binaries\symbols\retail\dll\dbghelp.dbg
0000000044,file,f:\binaries\symbols\retail\dll\dbghelp.dbg
0000000045,file,g:\binaries\symbols\retail\dll\dbghelp.dbg
0000000046,ptr,\\sampledir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\sampledir2\bin\symbols\retail\dll\dbghelp.dbg
Így a 43., a 44. és a 45. tranzakció ugyanazt a fájlt adta hozzá a kiszolgálóhoz, a 46-os és a 47-s tranzakciók pedig mutatót adtak hozzá. Ha a 43., a 44. és a 45. tranzakció törölve van, akkor a dbghelp.dbg fájl törlődik a könyvtárból. A könyvtár ekkor a következő tartalommal rendelkezik:
Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999 05:01p 49 file.ptr
10/13/1999 05:01p 130 refs.ptr
A file.ptr most a következőt tartalmazza: "\\sampledir2\bin\symbols\retail\dll\dbghelp.dbg", a refs.ptr pedig
0000000046,ptr,\\sampledir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\sampledir2\bin\symbols\retail\dll\dbghelp.dbg
Amikor a refs.ptr fájl utolsó bejegyzése egy mutató, a fájl.ptr létezik, és tartalmazza a társított fájl elérési útját. Amikor a refs.ptr utolsó bejegyzése egy fájl, ebben a könyvtárban nem fog létezni fájl.ptr. Ezért minden olyan törlési művelet, amely eltávolítja a refs.ptr végleges bejegyzését, a file.ptr létrehozását, törlését vagy módosítását eredményezheti.