SymStore のトランザクション

SymStore の呼び出しはすべてトランザクションとして記録されます。 トランザクションには、追加と削除の 2 種類があります。

シンボル ストアが作成されると、「000admin」という名前のディレクトリがサーバーのルートの下に作成されます。 000admin ディレクトリには、トランザクションごとに 1 つのファイルと、ログ ファイル server.txt および history.txt. が含まれています。 server.txt ファイルには、現在サーバー上にあるすべてのトランザクションの一覧が含まれています。 history.txt ファイルには、すべてのトランザクションの時系列履歴が含まれています。

SymStore がシンボル ファイルを格納または削除するたびに、新しいトランザクション番号が作成されます。 次に、このトランザクション番号を名前とするファイルが 000admin に作成されます。 このファイルには、このトランザクション中にシンボル ストアに追加されたすべてのファイルまたはポインターの一覧が含まれています。 トランザクションが削除されると、SymStore はトランザクション ファイルを読み取り、削除する必要があるファイルとポインターを決定します。

add オプションと del オプションは、追加または削除トランザクションを実行するかどうかを指定します。 /p オプションを追加操作と共に含めると、ポインターの追加を指定します。/p オプションを省略すると、実際のシンボル ファイルが追加されます。

シンボル ストアは、2 つの異なるステージで作成することもできます。 最初のステージでは、/x オプションと共に SymStore を使用してインデックス ファイルを作成します。 2 番目のステージでは、/y オプションを指定して SymStore を使用して、インデックス ファイル内の情報からファイルまたはポインターの実際のストアを作成します。

これは、さまざまな理由で便利な手法です。 たとえば、これにより、シンボル ストアが何らかの理由で失われた場合でも、インデックス ファイルがまだ存在する限り、シンボル ストアを簡単に再作成できます。 あるいは、シンボル ファイルを含むコンピューターとシンボル ストアが作成されるコンピューターへのネットワーク接続が遅い可能性があります。 この場合、シンボル ファイルと同じマシンにインデックス ファイルを作成し、そのインデックス ファイルを 2 台目のマシンに転送して、2 台目のマシンにストアを作成できます。

すべての SymStore パラメーターの完全な一覧については、 「SymStore コマンド ライン オプション」を参照してください。

(注) SymStore では、複数のユーザーからの同時トランザクションはサポートされません。 1 人のユーザーにシンボル ストアの "管理者" を指定し、すべての add トランザクションと del トランザクションを担当することをお勧めします。

トランザクションの例

次に、SymStore が Windows Server 2003 のビルド 3790 のシンボル ポインターを \\MyDir\symsrv に追加する 2 つの例を示します。

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"

次の例では、SymStore は、\\largeapp\appserver\bins にあるアプリケーション プロジェクトの実際のシンボル ファイルを \\MyDir\symsrv に追加します。

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

インデックス ファイルの使用方法の例を次に示します。 最初に、SymStore は \\largeapp\appserver\bins\ のシンボル ファイルのコレクションに基づいてインデックス ファイルを作成します。 この場合、インデックス ファイルは 3 番目のコンピューター \\hubserver\hubshare に配置されます。 /g オプションを使用して、ファイル プレフィックス「\\largeapp\appserver」が将来変更される可能性があることを指定します。

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

ここで、コンピューター \\largeapp\appserver からすべてのシンボル ファイルを移動し、\\myarchive\appserver に配置するとします。 その後、次のように、インデックス ファイル \\hubserver\hubshare\myindex.txt からシンボル ストア自体を作成できます。

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"

最後に、前のトランザクションによって追加されたファイルを削除する SymStore の例を次に示します。 トランザクション ID (この場合は 0000000096) を決定する方法については、後述の「server.txtおよびhistory.txt ファイル」セクションを参照してください。

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

server.txt ファイルと history.txt ファイル

トランザクションが追加されると、将来の検索機能のために、いくつかの情報項目が server.txt と history.txt に追加されます。 以下は、追加トランザクションの server.txt と history.txt の行の例です。

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

これはコンマ区切りの行です。 フィールドの説明は次のとおりです。

フィールド 説明

0000000096

SymStore によって作成されたトランザクション ID 番号。

add

トランザクションの種類。 このフィールドには、add または del を指定できます。

ptr

ファイルまたはポインターが追加されたかどうか。 このフィールドには、file または ptr のいずれかを指定できます。

10/09/99

トランザクションが発生した日付。

00:08:32

トランザクションが開始された時刻。

Windows Vista SP 1

製品。

x86 fre

バージョン (省略可能)。

次の場所から追加

コメント (任意指定)

未使用

(今後利用するために予約されています。)

次に、トランザクション ファイル 0000000096 のサンプル行をいくつか示します。 各行には、ディレクトリと、ディレクトリに追加されたファイルまたはポインターの場所が記録されます。

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

del トランザクションを使用して元の add トランザクションを元に戻すと、これらの行は server.txt から削除され、次の行が history.txt に追加されます。

0000000105,del,0000000096

削除トランザクションのフィールドは次のように説明されます。

フィールド 説明

0000000105

SymStore によって作成されたトランザクション ID 番号。

del

トランザクションの種類。 このフィールドには、add または del を指定できます。

0000000096

削除されたトランザクション。