Bagikan melalui


Menggunakan SymSrv

SymSrv mengirimkan file simbol dari penyimpanan simbol terpusat. Penyimpanan ini dapat berisi sejumlah file simbol, yang sesuai dengan sejumlah program atau sistem operasi. Penyimpanan juga dapat berisi file biner, yang sangat berguna saat men-debug file minidump.

Penyimpanan dapat berisi simbol aktual dan file biner atau hanya penunjuk ke file simbol. Jika penyimpanan berisi pointer, SymSrv akan mengambil file aktual langsung dari sumbernya.

SymSrv juga dapat memisahkan penyimpanan simbol besar menjadi subset yang lebih kecil yang sesuai untuk tugas penelusuran kesalahan khusus.

Terakhir, SymSrv dapat memperoleh file simbol dari sumber HTTP atau HTTPS menggunakan informasi masuk yang disediakan oleh sistem operasi. SymSrv mendukung situs HTTPS yang dilindungi oleh kartu pintar, sertifikat, dan login dan kata sandi reguler.

Mengatur Jalur Simbol

Seperti yang dijelaskan dalam Jalur Simbol, jalur simbol (_NT_SYMBOL_PATH variabel lingkungan) dapat terdiri dari beberapa elemen jalur yang dipisahkan oleh titik koma. Jika salah satu atau beberapa elemen jalur ini dimulai dengan teks "srv*", maka elemen adalah server simbol dan akan menggunakan SymSrv untuk menemukan file simbol.

Catatan

Jika teks "srv*" tidak ditentukan tetapi elemen jalur aktual adalah penyimpanan server simbol, maka penangan simbol akan bertindak seolah-olah "srv*" ditentukan. Penangan simbol membuat penentuan ini dengan mencari keberadaan file yang disebut "pingme.txt" di direktori akar jalur yang ditentukan.

 

Sama seperti jalur simbol terdiri dari elemen jalur simbol yang dipisahkan oleh titik koma, server simbol terdiri dari elemen penyimpanan simbol yang dipisahkan oleh tanda bintang. Mungkin ada hingga 10 penyimpanan simbol setelah awalan "srv*". Penyimpanan yang tercantum di sebelah kiri daftar disebut penyimpanan hilir dan penyimpanan di sebelah kanan disebut toko upstream .

srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*

Jika hanya satu elemen penyimpanan simbol yang disertakan dalam jalur, maka SymSrv akan mencoba menggunakan file yang diminta langsung dari penyimpanan tersebut.

Jika ada dua penyimpanan simbol di jalur, SymSrv mencari file simbol di penyimpanan simbol paling kiri. Jika file ada di sana, file akan digunakan. Jika tidak ada, SymSrv terlihat di penyimpanan simbol segera di sebelah kanan. Jika file ada di sana, file disalin ke penyimpanan kiri dan dibuka dari sana.

Jika ada lebih dari dua penyimpanan, perilaku ini berlanjut ke kanan sampai file ditemukan atau tidak ada lagi penyimpanan dalam daftar.

File tidak pernah dibuka dari penyimpanan apa pun tetapi penyimpanan paling kiri. Jika file ditemukan di tempat lain dalam rantai, file tersebut disalin ke setiap penyimpanan di sebelah kirinya. Proses penyalinan ini disebut "berjenjang" dan memberikan manfaat tertentu yang akan diklarifikasi nanti dalam dokumen ini.

Jenis Penyimpanan Simbol

Tabel berikut ini menampilkan contoh jenis penyimpanan simbol yang didukung.

Jenis penyimpanan simbol Deskripsi
\\server\share Jalur UNC yang sepenuhnya memenuhi syarat ke berbagi di server jarak jauh.
c:\LocalCache Jalur ke direktori pada komputer klien.
https://InternetSite URL ke situs web yang menghosting simbol. Harus menjadi penyimpanan paling kanan dalam daftar dan tidak boleh menjadi satu-satunya penyimpanan dalam daftar.
https://SecureInternetSite URL ke situs web aman yang menghosting simbol. Ini dapat mendukung kata sandi, kredensial masuk Windows, sertifikat, dan kartu pintar. Harus menjadi penyimpanan paling kanan dalam daftar dan tidak boleh menjadi satu-satunya penyimpanan dalam daftar.
<Kosong> Jika tidak ada teks di antara dua tanda bintang, ini menunjukkan penyimpanan hilir default. Lokasi diatur dengan memanggil SymSetHomeDirectory. Nilai default adalah direktori bernama "sym" tepat di bawah direktori program aplikasi panggilan. Ini terkadang disebut sebagai cache lokal default.

 

Karena penyimpanan simbol berbasis HTTP tidak dapat ditulis, penyimpanan tersebut harus menjadi penyimpanan paling kanan dalam daftar. Jika penyimpanan simbol berbasis HTTP terletak di tengah atau di sebelah kiri daftar penyimpanan, tidak mungkin untuk menyalin file yang ditemukan ke dalamnya dan rantai akan rusak. Selain itu, karena penangan simbol tidak dapat membuka file dari situs web, penyimpanan berbasis HTTP tidak boleh menjadi yang paling kiri atau hanya disimpan dalam daftar. Jika SymSrv pernah disajikan dengan jalur simbol ini, SymSrv akan mencoba memulihkan dengan menyalin file ke penyimpanan hilir default dan membukanya dari sana, terlepas dari apakah penyimpanan hilir default ditunjukkan di jalur simbol atau tidak.

Contoh

Untuk menggunakan SymSrv dengan penyimpanan simbol pada \\mybuilds\mysymbols, atur jalur simbol berikut:

set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

Untuk mengatur jalur simbol sehingga debugger akan menyalin file simbol dari penyimpanan simbol pada \\mybuilds\mysymbols ke direktori lokal Anda c:\localsymbols, gunakan:

set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols

Untuk mengatur jalur simbol sehingga debugger akan menyalin file simbol dari penyimpanan simbol pada \\mybuilds\mysymbols ke penyimpanan hilir default (biasanya c:\debuggers\sym), gunakan:

set _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

Untuk menggunakan penyimpanan bertingkat, atur jalur simbol berikut:

set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer

Dalam contoh ini, SymSrv pertama-tama mencari file di c:\localsymbols. Jika ditemukan di sana, itu akan mengembalikan jalur ke file. Jika tidak, SymSrv mencari file di \\NearbyServer\store. Jika ditemukan di sana, SymSrv menyalin file ke c:\localsymbols dan mengembalikan jalur ke file; jika tidak ditemukan, SymSrv mencari file di , dan jika ditemukan di https://DistantServersana, SymSrv menyalin file ke \\NearbyServer\store, lalu ke c:\localsymbols.

Contoh terakhir ini menunjukkan bagaimana desain judicious dari jalur simbol dapat digunakan untuk mengoptimalkan pengunduhan simbol. Jika Anda memiliki situs kerja dengan sekelompok debugger dan semuanya perlu mendapatkan simbol dari lokasi yang jauh, Anda dapat mengatur server umum dengan penyimpanan simbol di dekat semua debugger. Kemudian siapkan setiap debugger dengan jalur simbol di atas. Debugger pertama yang memerlukan versi foo.pdb tertentu akan mengunduhnya dari https://DistantServer ke \\NearbyServer\store dan kemudian ke komputernya sendiri di c:\localsymbols. Debugger berikutnya yang memerlukan file yang sama akan dapat mengunduhnya dari \\NearbyServer\store karena sudah diunduh ke lokasi tersebut oleh debugger sebelumnya. Penembolokan multi-tingkat ini menghemat waktu dan bandwidth jaringan yang signifikan.

Microsoft Symbol Store

Microsoft menyediakan akses ke server simbol Internet yang berisi file simbol untuk banyak versi sistem operasi Windows. Katalog simbol ini tidak dijamin lengkap, tetapi luas. Produk Microsoft lainnya juga diwakili.

Server simbol Internet diisi dengan berbagai simbol Windows untuk sistem operasi Microsoft Windows, termasuk perbaikan panas, Paket Layanan, Paket Rollup Keamanan, dan rilis ritel. Simbol juga tersedia di server untuk Beta saat ini dan Kandidat Rilis untuk produk Windows, ditambah berbagai produk Microsoft lainnya, seperti Microsoft Internet Explorer.

Jika Anda memiliki akses ke Internet selama penelusuran kesalahan, Anda dapat mengonfigurasi debugger untuk mengunduh simbol sesuai kebutuhan selama sesi penelusuran kesalahan, daripada mengunduh file simbol secara terpisah sebelum sesi penelusuran kesalahan. Simbol diunduh ke lokasi direktori yang Anda tentukan lalu debugger memuatnya dari sana.

URL untuk penyimpanan simbol Microsoft adalah https://msdl.microsoft.com/download/symbols. Contoh berikut menunjukkan cara mengatur jalur simbol debugger (ganti jalur penyimpanan hilir Anda untuk c:\DownstreamStore):

srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols

File Terkompresi

SymSrv kompatibel dengan penyimpanan simbol yang berisi file terkompresi, selama kompresi ini telah diformat sebelumnya dengan alat compress.exe yang didistribusikan dengan Windows Server 2003 Resource Kit. File terkompresi harus memiliki garis bawah sebagai karakter terakhir dalam ekstensi file mereka (misalnya, module1.pd_ atau module2.db_). Untuk detailnya, lihat Menggunakan SymStore.

Saat bertingkat, file tidak dikompresi kecuali penyimpanan target adalah penyimpanan paling kiri di jalur. Jika hanya ada satu penyimpanan di jalur dan berisi file terkompresi, SymSrv akan menyalin file ke penyimpanan hilir default dan membukanya dari sana, meskipun penyimpanan hilir default tidak ditunjukkan di jalur simbol mereka.

DbgHelp 6.1 dan yang lebih lama.: Jika file di penyimpanan master dikompresi, Anda harus menggunakan penyimpanan hilir. SymSrv akan membongkar semua file sebelum menyalinnya ke penyimpanan hilir.

Menghapus Cache

Jika Anda menggunakan penyimpanan hilir sebagai cache, Anda dapat menghapus direktori ini kapan saja untuk menghemat ruang disk.

Dimungkinkan untuk memiliki penyimpanan simbol luas yang mencakup file simbol untuk banyak program atau versi Windows yang berbeda. Jika Anda memutakhirkan versi Windows yang digunakan pada komputer target Anda, file simbol yang di-cache semuanya akan cocok dengan versi sebelumnya. File yang di-cache ini tidak akan digunakan lebih lanjut, dan oleh karena itu ini mungkin waktu yang tepat untuk menghapus cache.

Alat Penelusuran Kesalahan untuk Windows dilengkapi dengan utilitas yang disebut agestore.exe yang akan secara selektif menghapus file dari pohon direktori, meninggalkan file yang terakhir digunakan. Alat ini dirancang untuk memangkas file yang tidak digunakan dari penyimpanan server simbol. Ini memungkinkan Anda untuk mengontrol banyak opsi termasuk tanggal terputus dan algoritma ukuran direktori.

Direktori Singgahan Datar

Dimungkinkan untuk mendeklarasikan penyimpanan hilir default sebagai direktori datar, bukan struktur pohon simbol standar. Untuk melakukannya, panggil fungsi SymSetOptions dengan SYMOPT_FLAT_DIRECTORY (ini juga mengatur opsi SSRVOPT_FLAT_DEFAULT_STORE di SymSrv). Pastikan untuk memanggil SymSetHomeDirectory sebelum melakukannya; jika tidak, file simbol dapat ditulis ke direktori program.

File Penunjuk

SymStore dapat membuat dan menggunakan file yang menunjuk ke file target daripada file target itu sendiri. Jika penyimpanan simbol berisi file penunjuk seperti itu, defaultnya adalah menyalin file dari lokasi yang ditunjukkan dalam file penunjuk ke penyimpanan. Untuk mengonfigurasi penyimpanan sedih sehingga file penunjuk disalin alih-alih file yang ditunjukkannya, buat file bernama wantsptr.txt di akar penyimpanan target. Konten wantsptr.txt tidak penting, hanya keberadaan file.

Mengecualikan File dari Daftar Simbol

Untuk mengecualikan file dari pencarian simbol, Anda dapat menentukan namanya di symsrv.ini atau di registri. Untuk menentukan file dalam symsrv.ini, buat bagian bernama Pengecualian dan cantumkan file. Nama file dapat berisi kartubebas, seperti yang ditunjukkan dalam contoh berikut:

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini harus terletak di direktori yang sama dengan yang symsrv.dll berada. Di sebagian besar penginstalan, file tidak ada dan Anda harus membuat yang baru.

Atau, Anda dapat menyimpan file yang akan dikecualikan dalam registri. Buat kunci registri berikut: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Simpan setiap nama file sebagai nilai string (REG_SZ) dalam kunci ini. Nama nilai string menentukan nama file yang akan dikecualikan. Anda dapat menggunakan konten nilai string untuk menyimpan komentar yang menjelaskan mengapa file dikecualikan.

Penginstalan

Server simbol SymSrv (symsrv.dll) disertakan dalam paket Alat Penelusuran Kesalahan untuk Windows. Ini harus diinstal di direktori yang sama dengan salinan dbghelp.dll yang Anda muat. Untuk detail selengkapnya, lihat Memanggil Pustaka DbgHelp.