Aracılığıyla paylaş


Sembol Depolama Biçimi

SymStore, dosya sisteminin kendisini veritabanı olarak kullanır. Simge dosya zaman damgaları, imzalar, yaş ve diğer verileri temel alan dizin adlarıyla büyük bir dizin ağacı oluşturur.

Örneğin, sunucuya birkaç farklı acpi.dbgs eklendikten sonra dizinler şöyle görünebilir:

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

Bu örnekte, acpi.dbg sembol dosyasının arama yolu şöyle görünebilir: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.

Arama dizininde üç dosya bulunabilir:

  1. acpi.dbg, dosyanın depolanmış olup olmadığını

  2. file.ptr bir işaretçi depolanmışsa, gerçek simge dosyasının yolunu içerir

  3. şu anda simge deposuna eklenmiş olan bu zaman damgası ve görüntü boyutuna sahip acpi.dbg için tüm geçerli konumların listesini içeren refs.ptr

\\mybuilds\symsrv\acpi.dbg\37cdb03962040 dizin listesinin görüntülenmesi aşağıdakileri sağlar:

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

file.ptr dosyası "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg" metin dizesini içerir. Bu dizinde acpi.dbg adlı bir dosya olmadığından, hata ayıklayıcı dosyayı \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg konumunda bulmaya çalışır.

refs.ptr içeriği, hata ayıklayıcı tarafından değil, yalnızca SymStore tarafından kullanılır. Bu dosya, bu dizinde gerçekleşen tüm işlemlerin kaydını içerir. refs.ptr dosyasının örnek satırı şu olabilir:

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

Bu, \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg için bir işaretçinin "0000000026" işlemiyle eklendiğini gösterir.

Bazı sembol dosyaları çeşitli ürünler, derlemeler veya belirli bir ürün aracılığıyla sabit kalır. Bunun bir örneği, Windows 2000 dosyası msvcrt.pdb'dir. \\mybuilds\symsrv\msvcrt.pdb dizin listesi, semboller sunucusuna yalnızca iki msvcrt.pdb sürümünün eklendiğini gösterir:

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

Ancak, \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 dizin listesi, refs.ptr dosyasının içinde birkaç işaretçi olduğunu gösterir.

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 içeriği şunlardır:

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

Bu, \\mybuilds\symsrv üzerinde depolanan Windows 2000 için birden çok simge derlemesi için aynı msvcrt.pdb'nin kullanıldığını gösterir.

Dosya ve işaretçi eklemelerinin bir karışımını içeren bir dizin örneği aşağıda verilmiştir:

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

Bu durumda refs.ptr dosyasında aşağıdaki içerikler bulunur:

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

Böylece, 43, 44 ve 45 numaralı işlemler aynı dosyayı sunucuya eklerken, 46 ve 47 numaralı işlemler işaretçileri ekledi. 43, 44 ve 45 işlemleri silinirse dbghelp.dbg dosyası dizinden silinir. Bundan sonra dizin aşağıdaki içeriklere sahip olur:

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

Şimdi, file.ptr "\\foo2\bin\symbols\retail\dll\dbghelp.dbg" içerir ve refs.ptr da içerir.

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

refs.ptr dosyasındaki son girdi bir işaretçi olduğunda file.ptr dosyası mevcut olur ve ilişkili dosyanın yolunu içerir. refs.ptr dosyasındaki son girdi bir dosya olduğunda, bu dizinde file.ptr bulunmaz. Bu nedenle, refs.ptr dosyasındaki son girdiyi kaldıran herhangi bir silme işlemi file.ptr dosyasının oluşturulmasına, silinmesine veya değiştirilmesine neden olabilir.