Share via


符號儲存格式

SymStore 會使用檔案系統本身作為資料庫。 它會建立大型目錄樹狀結構,並以符號檔時間戳記、簽章、存留期和其他資料等專案為基礎的目錄名稱。

例如,將數個不同的 acpi.dbgs 新增至伺服器之後,目錄看起來可能會像這樣:

Directory of \\mybuilds\symsrv\acpi.dbg
10/06/1999  05:46p      <DIR>          .
10/06/1999  05:46p      <DIR>          ..
10/04/1999  01:54p      <DIR>          37cdb03962040
10/04/1999  01:49p      <DIR>          37cdb04027740
10/04/1999  12:56p      <DIR>          37e3eb1c62060
10/04/1999  12:51p      <DIR>          37e3ebcc27760
10/04/1999  12:45p      <DIR>          37ed151662060
10/04/1999  12:39p      <DIR>          37ed15dd27760
10/04/1999  11:33a      <DIR>          37f03ce962020
10/04/1999  11:21a      <DIR>          37f03cf7277c0
10/06/1999  05:38p      <DIR>          37fa7f00277e0
10/06/1999  05:46p      <DIR>          37fa7f01620a0

在此範例中,acpi.dbg 符號檔的查閱路徑可能如下所示:\\mybuilds\symsrv\acpi.dbg\37cdb03962040。

查閱目錄中可能有三個檔案:

  1. acpi.dbg,如果儲存檔案

  2. 如果儲存指標,則 file.ptr 具有實際符號檔的路徑

  3. refs.ptr,其中包含 acpi.dbg 的所有目前位置清單,其中包含目前新增至符號存放區的時間戳記和影像大小

顯示 \\mybuilds\symsrv\acpi.dbg\37cdb03962040 的目錄清單,提供下列專案:

10/04/1999  01:54p                  52 file.ptr
10/04/1999  01:54p                  67 refs.ptr

file.ptr 包含文字字串 「\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg」。 由於此目錄中沒有稱為 acpi.dbg 的檔案,偵錯工具會嘗試在 \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg 尋找檔案。

refs.ptr 的內容僅供 SymStore 使用,而不是偵錯工具。 此檔案包含此目錄中發生之所有交易的記錄。 refs.ptr 的範例行可能是:

0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg

這會顯示 \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg 的指標已新增交易 「0000000026」。

某些符號檔會透過各種產品或組建或特定產品維持不變。 其中一個範例是 Windows 2000 檔案 msvcrt.pdb。 \\mybuilds\symsrv\msvcrt.pdb 的目錄清單顯示只有兩個版本的 msvcrt.pdb 已新增至符號伺服器:

Directory of \\mybuilds\symsrv\msvcrt.pdb
10/06/1999  05:37p      <DIR>          .
10/06/1999  05:37p      <DIR>          ..
10/04/1999  11:19a      <DIR>          37a8f40e2
10/06/1999  05:37p      <DIR>          37f2c2272

不過,\\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 的目錄清單顯示 refs.ptr 有數個指標。

Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999  02:50p              54     file.ptr
10/05/1999  02:50p           2,039     refs.ptr

\\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr 的內容如下:

0000000001,ptr,\\mybuilds\symbols\x86\2137\symbols\dll\msvcrt.pdb
0000000002,ptr,\\mybuilds\symbols\x86\2137.chk\symbols\dll\msvcrt.pdb
0000000003,ptr,\\mybuilds\symbols\x86\2138\symbols\dll\msvcrt.pdb
0000000004,ptr,\\mybuilds\symbols\x86\2138.chk\symbols\dll\msvcrt.pdb
0000000005,ptr,\\mybuilds\symbols\x86\2139\symbols\dll\msvcrt.pdb
0000000006,ptr,\\mybuilds\symbols\x86\2139.chk\symbols\dll\msvcrt.pdb
0000000007,ptr,\\mybuilds\symbols\x86\2140\symbols\dll\msvcrt.pdb
0000000008,ptr,\\mybuilds\symbols\x86\2140.chk\symbols\dll\msvcrt.pdb
0000000009,ptr,\\mybuilds\symbols\x86\2136\symbols\dll\msvcrt.pdb
0000000010,ptr,\\mybuilds\symbols\x86\2136.chk\symbols\dll\msvcrt.pdb
0000000011,ptr,\\mybuilds\symbols\x86\2135\symbols\dll\msvcrt.pdb
0000000012,ptr,\\mybuilds\symbols\x86\2135.chk\symbols\dll\msvcrt.pdb
0000000013,ptr,\\mybuilds\symbols\x86\2134\symbols\dll\msvcrt.pdb
0000000014,ptr,\\mybuilds\symbols\x86\2134.chk\symbols\dll\msvcrt.pdb
0000000015,ptr,\\mybuilds\symbols\x86\2133\symbols\dll\msvcrt.pdb
0000000016,ptr,\\mybuilds\symbols\x86\2133.chk\symbols\dll\msvcrt.pdb
0000000017,ptr,\\mybuilds\symbols\x86\2132\symbols\dll\msvcrt.pdb
0000000018,ptr,\\mybuilds\symbols\x86\2132.chk\symbols\dll\msvcrt.pdb
0000000019,ptr,\\mybuilds\symbols\x86\2131\symbols\dll\msvcrt.pdb
0000000020,ptr,\\mybuilds\symbols\x86\2131.chk\symbols\dll\msvcrt.pdb
0000000021,ptr,\\mybuilds\symbols\x86\2130\symbols\dll\msvcrt.pdb
0000000022,ptr,\\mybuilds\symbols\x86\2130.chk\symbols\dll\msvcrt.pdb
0000000023,ptr,\\mybuilds\symbols\x86\2129\symbols\dll\msvcrt.pdb
0000000024,ptr,\\mybuilds\symbols\x86\2129.chk\symbols\dll\msvcrt.pdb
0000000025,ptr,\\mybuilds\symbols\x86\2128\symbols\dll\msvcrt.pdb
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\dll\msvcrt.pdb
0000000027,ptr,\\mybuilds\symbols\x86\2141\symbols\dll\msvcrt.pdb
0000000028,ptr,\\mybuilds\symbols\x86\2141.chk\symbols\dll\msvcrt.pdb
0000000029,ptr,\\mybuilds\symbols\x86\2142\symbols\dll\msvcrt.pdb
0000000030,ptr,\\mybuilds\symbols\x86\2142.chk\symbols\dll\msvcrt.pdb

這會顯示相同的 msvcrt.pdb 用於儲存在 \\mybuilds\symsrv 上之 Windows 2000 的多個符號組建。

以下是包含混合檔案和指標新增專案的目錄範例:

Directory of E:\symsrv\dbghelp.dbg\38039ff439000
10/12/1999  01:54p         141,232     dbghelp.dbg
10/13/1999  04:57p              49     file.ptr
10/13/1999  04:57p             306     refs.ptr

在此情況下,refs.ptr 具有下列內容:

0000000043,file,e:\binaries\symbols\retail\dll\dbghelp.dbg
0000000044,file,f:\binaries\symbols\retail\dll\dbghelp.dbg
0000000045,file,g:\binaries\symbols\retail\dll\dbghelp.dbg
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg

因此,交易 43、44 和 45 會將相同的檔案新增至伺服器,而交易 46 和 47 則新增指標。 如果刪除交易 43、44 和 45,則會從目錄中刪除 dbghelp.dbg 檔案。 目錄接著會有下列內容:

Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999  05:01p                   49 file.ptr
10/13/1999  05:01p                 130 refs.ptr

現在 file.ptr 包含 「\\foo2\bin\symbols\retail\dll\dbghelp.dbg」,而 refs.ptr 包含

0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg

每當 refs.ptr 中的最後一個專案是指標時,file.ptr 檔案將會存在,並包含相關聯檔案的路徑。 每當 refs.ptr 的最後一個專案是檔案時,此目錄中不會有任何 file.ptr。 因此,任何移除 refs.ptr 中最終專案的刪除作業都可能會導致 file.ptr 建立、刪除或變更。