Partager via


SymStore Transactions

Chaque appel à SymStore est enregistré en tant que transaction. Il existe deux types de transactions : ajouter et supprimer.

Lorsque le magasin de symboles est créé, un répertoire appelé « 000admin » est créé sous la racine du serveur. Le répertoire 000admin contient un fichier pour chaque transaction, ainsi que les fichiers journaux server.txt et history.txt. Le fichier server.txt contient une liste de toutes les transactions qui se trouvent actuellement sur le serveur. Le fichier history.txt contient un historique chronologique de toutes les transactions.

Chaque fois que SymStore stocke ou supprime des fichiers de symboles, un nouveau numéro de transaction est créé. Ensuite, un fichier, dont le nom est ce numéro de transaction, est créé dans 000admin. Ce fichier contient la liste de tous les fichiers ou pointeurs qui ont été ajoutés au magasin de symboles pendant cette transaction. Si une transaction est supprimée, SymStore lit son fichier transaction pour déterminer les fichiers et les pointeurs qu’il doit supprimer.

Les options add et del spécifient si une transaction d’ajout ou de suppression doit être effectuée. L’inclusion de l’option /p avec une opération d’ajout spécifie qu’un pointeur doit être ajouté ; L’omission de l’option /p spécifie que le fichier de symboles réel doit être ajouté.

Il est également possible de créer le magasin de symboles en deux étapes distinctes. Dans la première étape, vous utilisez SymStore avec l’option /x pour créer un fichier d’index. Dans la deuxième étape, vous utilisez SymStore avec l’option /y pour créer le magasin réel de fichiers ou de pointeurs à partir des informations contenues dans le fichier d’index.

Cette technique peut être utile pour diverses raisons. Par instance, cela permet de recréer facilement le magasin de symboles si le magasin est perdu d’une manière ou d’une autre, tant que le fichier d’index existe toujours. Ou peut-être que l’ordinateur contenant les fichiers de symboles a une connexion réseau lente à l’ordinateur sur lequel le magasin de symboles sera créé. Dans ce cas, vous pouvez créer le fichier d’index sur la même machine que les fichiers de symboles, transférer le fichier d’index vers la deuxième machine, puis créer le magasin sur la deuxième machine.

Pour obtenir la liste complète de tous les paramètres SymStore, consultez Options de Command-Line SymStore.

Note SymStore ne prend pas en charge les transactions simultanées de plusieurs utilisateurs. Il est recommandé qu’un utilisateur soit désigné « administrateur » du magasin de symboles et soit responsable de toutes les transactions add et del .

Exemples de transactions

Voici deux exemples de SymStore ajoutant des pointeurs de symbole pour la build 2195 de Windows 2000 à \\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"

Dans l’exemple suivant, SymStore ajoute les fichiers de symboles réels pour un projet d’application dans \\largeapp\appserver\bins à \\MyDir\symsrv :

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

Voici un exemple d’utilisation d’un fichier d’index. Tout d’abord, SymStore crée un fichier d’index basé sur la collection de fichiers de symboles dans \\largeapp\appserver\bins\. Dans ce cas, le fichier d’index est placé sur un troisième ordinateur, \\hubserver\hubshare. Vous utilisez l’option /g pour spécifier que le préfixe de fichier « \\largeapp\appserver » peut changer à l’avenir :

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

Supposons maintenant que vous déplacez tous les fichiers de symboles de la machine \\largeapp\appserver et que vous les placez sur \\myarchive\appserver. Vous pouvez ensuite créer le magasin de symboles lui-même à partir du fichier d’index \\hubserver\hubshare\myindex.txt comme suit :

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"

Enfin, voici un exemple de SymStore supprimant un fichier ajouté par une transaction précédente. Consultez la section « Fichiers server.txt et history.txt » ci-dessous pour obtenir une explication de la façon de déterminer l’ID de transaction (dans ce cas, 0000000096).

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

Fichiers server.txt et history.txt

Lorsqu’une transaction est ajoutée, plusieurs éléments d’informations sont ajoutés à server.txt et history.txt pour la fonctionnalité de recherche future. Voici un exemple de ligne dans server.txt et history.txt pour une transaction d’ajout :

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

Il s’agit d’une ligne séparée par des virgules. Les champs sont expliqués comme suit :

Champ Description

0000000096

Numéro d’ID de transaction, tel que créé par SymStore.

ajouter

Type de transaction. Ce champ peut être ajouté ou del.

ptr

Indique si des fichiers ou des pointeurs ont été ajoutés. Ce champ peut être fichier ou ptr.

10/09/99

Date à laquelle la transaction s’est produite.

00:08:32

Heure à laquelle la transaction a démarré.

Windows Vista SP 1

Produit.

x86 fre

Version (facultatif).

Ajouté à partir de

Commentaire (facultatif)

Inutilisé

(Réservé pour une utilisation ultérieure.)

Voici quelques exemples de lignes du fichier transaction 0000000096. Chaque ligne enregistre le répertoire et l’emplacement du fichier ou du pointeur qui a été ajouté au répertoire.

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

Si vous utilisez une transaction del pour annuler les transactions d’ajout d’origine, ces lignes seront supprimées de server.txt et la ligne suivante sera ajoutée à history.txt :

0000000105,del,0000000096

Les champs de la transaction de suppression sont décrits comme suit.

Champ Description

0000000105

Numéro d’ID de transaction, tel que créé par SymStore.

del

Type de transaction. Ce champ peut être ajouté ou del.

0000000096

Transaction supprimée.