Partilhar via


Transações SymStore

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

Quando o repositório de símbolos é criado, um diretório, chamado "000admin", é criado sob a 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.

Cada vez que SymStore armazena ou remove arquivos de símbolos, um novo número de transação é criado. Em seguida, um arquivo, cujo nome é esse número de transação, é criado em 000admin. Este arquivo contém uma lista de todos os arquivos ou ponteiros que foram adicionados ao armazenamento de símbolos durante esta 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 adicionar 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 se deve adicionar um ponteiro; omitir a opção /p especifica que se deve adicionar o ficheiro de símbolo real.

Também é possível criar a loja de símbolos em duas etapas separadas. Na primeira etapa, você usa SymStore com a opção /x para criar um arquivo de índice. Na segunda etapa, você usa SymStore com a opção /y para criar o armazenamento real de arquivos ou ponteiros a partir das informações no arquivo de índice.

Esta pode ser uma técnica útil por uma variedade de razões. Por exemplo, isso permite que o repositório de símbolos seja facilmente recriado se o armazenamento for perdido de alguma forma, 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 armazenamento de símbolos será criado. Nesse caso, você pode criar o arquivo de índice na mesma máquina que os arquivos de símbolo, transferir o arquivo de índice para a segunda máquina e, em seguida, criar o armazenamento na segunda máquina.

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

Observação SymStore não suporta transações simultâneas de vários usuários. Recomenda-se que um utilizador seja designado "administrador" da loja de símbolos e seja responsável por todas as transações de adição e remoção.

Exemplos de transações

Aqui estão dois exemplos de SymStore adicionando referências de símbolos da compilação 2195 do Windows 2000 na \\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, SymStore adiciona os ficheiros de símbolos reais para um projeto de aplicação em \\largeapp\appserver\bins no \\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 do arquivo "\\largeapp\appserver" pode mudar 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 da máquina \\largeapp\appserver e coloque-os em \\myarchive\appserver. Em seguida, você pode criar o próprio armazenamento de símbolos a partir 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"

Finalmente, aqui está um exemplo de SymStore excluindo um arquivo adicionado por uma transação anterior. Consulte a seção "The server.txt and history.txt Files" abaixo para obter uma explicação de como determinar o ID da transação (neste 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ção são adicionados ao server.txt e history.txt para a capacidade de pesquisa futura. Segue um exemplo de uma linha em (server.txt) e (history.txt) para uma transação de adição.

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írgula. Os campos são explicados da seguinte forma:

Campo Descrição

0000000096

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

adicionar

Tipo de transação. Este campo pode ser adicionar ou del.

ptr

Se foram adicionados ficheiros ou ponteiros. Este 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 começou.

Windows Vista SP 1

Produto.

x86 fre

Versão (opcional).

Adicionado de

Comentário (opcional)

Não utilizado

(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 o original adicionar transações, essas linhas serão removidas do server.txte a seguinte linha será adicionada a history.txt:

0000000105,del,0000000096

Os campos para a transação de exclusão são descritos a seguir.

Campo Descrição

0000000105

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

del

Tipo de transação. Este campo pode ser adicionar ou del.

0000000096

Transação que foi excluída.