Transações do SymStore

Cada chamada para SymStore é registrada como uma transação. Há dois tipos de transações: adicionar e excluir.

Quando o repositório de símbolos é criado, um diretório, chamado "000admin", é criado na raiz do servidor. O diretório 000admin contém um arquivo para cada transação, bem como os arquivos de log server.txt e history.txt. O arquivo server.txt contém uma lista de todas as transações que estão atualmente no servidor. O arquivo history.txt contém um histórico cronológico de todas as transações.

Sempre que o SymStore armazena ou remove arquivos de símbolo, um novo número de transação é criado. Em seguida, um arquivo, cujo nome é esse número de transação, é criado em 000admin. Esse arquivo contém uma lista de todos os arquivos ou ponteiros que foram adicionados ao repositório de símbolos durante essa transação. Se uma transação for excluída, o SymStore lerá seu arquivo de transação para determinar quais arquivos e ponteiros ele deve excluir.

As opções add e del especificam se uma transação de adição ou exclusão deve ser executada. Incluir a opção /p com uma operação de adição especifica que um ponteiro deve ser adicionado; omitir a opção /p especifica que o arquivo de símbolo real deve ser adicionado.

Também é possível criar o repositório de símbolos em dois estágios separados. No primeiro estágio, você usa o SymStore com a opção /x para criar um arquivo de índice. No segundo estágio, você usa o SymStore com a opção /y para criar o repositório real de arquivos ou ponteiros das informações no arquivo de índice.

Essa pode ser uma técnica útil por vários motivos. Por exemplo, isso permite que o repositório de símbolos seja facilmente recriado se o repositório for de alguma forma perdido, desde que o arquivo de índice ainda exista. Ou talvez o computador que contém os arquivos de símbolo tenha uma conexão de rede lenta com o computador no qual o repositório de símbolos será criado. Nesse caso, você pode criar o arquivo de índice no mesmo computador que os arquivos de símbolo, transferir o arquivo de índice para o segundo computador e, em seguida, criar o repositório no segundo computador.

Para obter uma listagem completa de todos os parâmetros do SymStore, consulte Opções de Command-Line do SymStore.

Nota O SymStore não dá suporte a transações simultâneas de vários usuários. É recomendável que um usuário seja designado como "administrador" do repositório de símbolos e seja responsável por todas as transações add e del .

Exemplos de transação

Aqui estão dois exemplos de SymStore adicionando ponteiros de símbolo para o build 2195 do Windows 2000 para \\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"

No exemplo a seguir, o SymStore adiciona os arquivos de símbolo reais para um projeto de aplicativo em \\largeapp\appserver\bins a \\MyDir\symsrv:

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

Aqui está um exemplo de como um arquivo de índice é usado. Primeiro, o SymStore cria um arquivo de índice com base na coleção de arquivos de símbolo em \\largeapp\appserver\bins\. Nesse caso, o arquivo de índice é colocado em um terceiro computador, \\hubserver\hubshare. Use a opção /g para especificar que o prefixo de arquivo "\\largeapp\appserver" pode ser alterado no futuro:

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

Agora, suponha que você mova todos os arquivos de símbolo do computador \\largeapp\appserver e coloque-os em \\myarchive\appserver. Em seguida, você pode criar o próprio repositório de símbolos do arquivo de índice \\hubserver\hubshare\myindex.txt da seguinte maneira:

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"

Por fim, aqui está um exemplo de SymStore excluindo um arquivo adicionado por uma transação anterior. Confira a seção "Os arquivos de server.txt e history.txt" abaixo para obter uma explicação de como determinar a ID da transação (nesse caso, 0000000096).

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

Os arquivos server.txt e history.txt

Quando uma transação é adicionada, vários itens de informações são adicionados a server.txt e history.txt para a funcionalidade de pesquisa futura. Veja a seguir um exemplo de uma linha em server.txt e history.txt para uma transação add:

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

Esta é uma linha separada por vírgulas. Os campos são explicados da seguinte maneira:

Campo Descrição

0000000096

Número da ID da transação, conforme criado pelo SymStore.

adicionar

Tipo de transação. Esse campo pode ser add ou del.

ptr

Se arquivos ou ponteiros foram adicionados. Esse campo pode ser arquivo ou ptr.

10/09/99

Data em que a transação ocorreu.

00:08:32

Hora em que a transação foi iniciada.

Windows Vista SP 1

Produto.

x86 fre

Versão (opcional).

Adicionado de

Comentário (opcional)

Não usado

(Reservado para uso posterior.)

Aqui estão algumas linhas de exemplo do arquivo de transação 0000000096. Cada linha registra o diretório e o local do arquivo ou ponteiro que foi adicionado ao diretório.

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

Se você usar uma transação del para desfazer as transações de adição originais, essas linhas serão removidas do server.txt e a seguinte linha será adicionada ao history.txt:

0000000105,del,0000000096

Os campos para a transação de exclusão são descritos da seguinte maneira.

Campo Descrição

0000000105

Número da ID da transação, conforme criado pelo SymStore.

del

Tipo de transação. Esse campo pode ser add ou del.

0000000096

Transação que foi excluída.