Udostępnij przez


Transakcje magazynu SymStore

Każde wywołanie usługi SymStore jest rejestrowane jako transakcja. Istnieją dwa typy transakcji: dodawanie i usuwanie.

Po utworzeniu magazynu symboli zostanie utworzony katalog o nazwie "000admin" w katalogu głównym serwera. Katalog 000admin zawiera jeden plik dla każdej transakcji, a także pliki dziennika server.txt i history.txt. Plik server.txt zawiera listę wszystkich transakcji, które znajdują się obecnie na serwerze. Plik history.txt zawiera chronologiczną historię wszystkich transakcji.

Za każdym razem, gdy program SymStore przechowuje lub usuwa pliki symboli, tworzony jest nowy numer transakcji. Następnie plik, którego nazwa to ten numer transakcji, jest tworzony w 000admin. Ten plik zawiera listę wszystkich plików lub wskaźników, które zostały dodane do magazynu symboli podczas tej transakcji. Jeśli transakcja zostanie usunięta, usługa SymStore odczytuje plik transakcji, aby określić, które pliki i wskaźniki powinny zostać usunięte.

Opcje dodaj i usuń określają, czy ma zostać wykonana transakcja dodawania lub usuwania. Dołączenie opcji /p z operacją dodawania określa, że wskaźnik ma zostać dodany; Pominięcie opcji /p określa, że ma zostać dodany rzeczywisty plik symboli.

Istnieje również możliwość utworzenia magazynu symboli w dwóch oddzielnych etapach. W pierwszym etapie użyjesz narzędzia SymStore z opcją /x, aby utworzyć plik indeksu. W drugim etapie używasz SymStore z opcją /y, aby utworzyć rzeczywisty magazyn plików lub wskaźników na podstawie informacji zawartych w pliku indeksu.

Może to być przydatna technika z różnych powodów. Na przykład umożliwia to łatwe odtworzenie magazynu symboli, jeśli magazyn zostanie w jakiś sposób utracony, o ile plik indeksu nadal istnieje. A może komputer zawierający pliki symboli ma powolne połączenie sieciowe z komputerem, na którym zostanie utworzony magazyn symboli. W takim przypadku można utworzyć plik indeksu na tej samej maszynie co pliki symboli, przenieść plik indeksu na drugą maszynę, a następnie utworzyć magazyn na drugiej maszynie.

Aby uzyskać pełną listę wszystkich parametrów SymStore, zobacz SymStore Command-Line Options (Opcje Command-Line SymStore).

Nuta Usługa SymStore nie obsługuje równoczesnych transakcji od wielu użytkowników. Zaleca się wyznaczenie jednego użytkownika jako "administratora" magazynu symboli i odpowiedzialnego za wszystkie transakcje dodawania i usuwania.

Przykłady transakcji

Oto dwa przykłady dodawania wskaźników symboli przez SymStore dla kompilacji 2195 systemu Windows 2000 do \\MyDir\symsrv:

symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 free" /c "Sample add"
symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 checked" /c "Sample add"

W poniższym przykładzie usługa SymStore dodaje rzeczywiste pliki symboli dla projektu aplikacji w folderze \\largeapp\appserver\bins do folderu \\MyDir\symsrv:

symstore add /r /f \\largeapp\appserver\bins\*.* /s \\MyDir\symsrv /t "Large Application" /v "Build 432" /c "Sample add"

Oto przykład użycia pliku indeksu. Najpierw usługa SymStore tworzy plik indeksu na podstawie kolekcji plików symboli w folderze \\largeapp\appserver\bins\. W takim przypadku plik indeksu jest umieszczany na trzecim komputerze \\hubserver\hubshare. Użyj opcji /g, aby określić, że prefiks pliku "\\largeapp\appserver" może ulec zmianie w przyszłości:

symstore add /r /p /g \\largeapp\appserver /f \\largeapp\appserver\bins\*.* /x \\hubserver\hubshare\myindex.txt

Teraz załóżmy, że przenosisz wszystkie pliki symboli z maszyny \\largeapp\appserver i umieszczasz je na \\myarchive\appserver. Następnie możesz utworzyć sam magazyn symboli z pliku indeksu \\hubserver\hubshare\myindex.txt w następujący sposób:

symstore add /y \\hubserver\hubshare\myindex.txt /g \\myarchive\appserver /s \\MyDir\symsrv /p /t "Large Application" /v "Build 432" /c "Sample Add from Index"

Na koniec oto przykład usuwania pliku dodanego przez poprzednią transakcję przez usługę SymStore. Zobacz sekcję "Pliki server.txt i history.txt" poniżej, aby uzyskać wyjaśnienie sposobu określania identyfikatora transakcji (w tym przypadku 0000000096).

symstore del /i 0000000096 /s \\MyDir\symsrv

Pliki server.txt i history.txt

Po dodaniu transakcji kilka elementów informacji jest dodawanych do server.txt i history.txt na potrzeby przyszłych funkcji wyszukiwania. Poniżej przedstawiono przykład wiersza w server.txt i history.txt dla transakcji dodawania:

0000000096,add,ptr,10/09/99,00:08:32,Windows Vista SP 1,x86 fre 1.156c-RTM-2,Added from \\mybuilds\symbols,

Jest to linia rozdzielona przecinkami. Pola są wyjaśnione w następujący sposób:

(No changes needed) Opis

0000000096

Numer identyfikatora transakcji utworzony przez usługę SymStore.

dodawać

Typ transakcji. Wartość tego pola może być add lub del.

ptr

Określa, czy dodano pliki, czy wskaźniki. To pole może być plikiem lub ptr.

10/09/99

Data wystąpienia transakcji.

00:08:32

Czas rozpoczęcia transakcji.

Windows Vista z dodatkiem SP 1

Produkt.

x86 fre

Wersja (opcjonalnie).

Dodano z

Komentarz (opcjonalnie)

Nieużywane

(Zarezerwowane do późniejszego użycia).

Oto kilka przykładowych wierszy z pliku transakcji 0000000096. Każdy wiersz rejestruje katalog i lokalizację pliku lub wskaźnika, który został dodany do katalogu.

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

Jeśli użyjesz transakcji del, aby cofnąć oryginalne dodać transakcje, te wiersze zostaną usunięte z server.txt, a następujący wiersz zostanie dodany do history.txt:

0000000105,del,0000000096

Pola dla transakcji usuwania są opisane w następujący sposób.

(No changes needed) Opis

0000000105

Numer identyfikatora transakcji utworzony przez usługę SymStore.

Del

Typ transakcji. Wartość tego pola może być add lub del.

0000000096

Transakcja, która została usunięta.