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. |