Jalur simbol untuk debugger Windows
Jalur simbol menentukan lokasi tempat debugger Windows, seperti WinDbg, KD, CDB, dan NTST, mencari file simbol. Untuk informasi selengkapnya tentang simbol dan file simbol, lihat Simbol.
Beberapa pengkompilasi, termasuk Microsoft Visual Studio, menempatkan file simbol di direktori yang sama dengan file biner. File simbol dan file biner yang diperiksa berisi jalur dan informasi nama file, yang memungkinkan debugger menemukan file simbol secara otomatis. Jika Anda men-debug proses mode pengguna di komputer tempat executable dibangun, dan jika file simbol berada di lokasi aslinya, debugger dapat menemukan file simbol tanpa Anda mengatur jalur simbol.
Dalam sebagian besar situasi lainnya, Anda perlu mengatur jalur simbol untuk menunjuk ke lokasi file simbol Anda.
Tip
Gunakan .symfix untuk mengatur jalur default ke server simbol publik Microsoft publik yang berfungsi dengan baik dalam banyak situasi.
Sintaks jalur simbol
Jalur simbol debugger adalah string yang terdiri dari beberapa jalur direktori yang dipisahkan oleh titik koma. Contohnya,C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB
.
Jalur relatif didukung. Namun, Anda harus menambahkan huruf drive atau berbagi jaringan sebelum setiap jalur, kecuali Anda selalu memulai debugger dari direktori yang sama. Berbagi jaringan juga didukung.
Untuk setiap direktori di jalur simbol, debugger terlihat dalam tiga direktori. Misalnya, jika jalur simbol menyertakan C:\Dir1
dan debugger mencari informasi simbol untuk DLL, debugger mencari informasi simbol di direktori berikut, yang tercantum secara berurutan:
C:\Dir1\symbols\dll
C:\Dir1\dll
C:\Dir1
Debugger kemudian mengulangi proses ini untuk setiap direktori di jalur simbol. Terakhir, debugger terlihat di direktori saat ini dan kemudian di direktori saat ini dengan ..\dll
ditambahkan ke direktori tersebut. Debugger menambahkan ..\dll
, , ..\exe
atau ..\sys
, tergantung biner mana yang di-debug.
File simbol memiliki stempel tanggal dan waktu. Debugger selalu mencari simbol yang cocok dengan stempel waktu pada file biner yang di-debug. Anda tidak perlu khawatir tentang debugger menggunakan simbol yang salah yang ditemukan pertama kali dalam urutan ini. Untuk informasi selengkapnya tentang respons saat file simbol tidak tersedia, lihat Mencocokkan nama simbol.
Salah satu cara untuk mengatur jalur simbol adalah dengan memasukkan perintah .sympath. Untuk cara lain untuk mengatur jalur simbol, lihat Mengontrol jalur simbol nanti dalam topik ini.
Simbol cache secara lokal
Anda harus menyimpan simbol Anda secara lokal. Salah satu cara untuk menyimpan simbol secara lokal adalah dengan menyertakan cache*;
atau cache*localsymbolcache;*
di jalur simbol Anda.
Jika Anda menyertakan string cache*;
di jalur simbol Anda, simbol yang dimuat dari elemen apa pun yang muncul di sebelah kanan string ini disimpan dalam direktori singgahan simbol default di komputer lokal. Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari berbagi jaringan bernama \\someshare
dan menyimpan simbol di lokasi default di komputer lokal.
.sympath cache*;\\someshare
Jika Anda menyertakan string cache*localsymbolcache;
di jalur simbol Anda, simbol yang dimuat dari elemen apa pun yang muncul di sebelah kanan string ini disimpan di direktori localsymbolcache .
Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari berbagi \\someshare
jaringan dan menyimpan simbol dalam c:\MySymbols
direktori.
.sympath cache*C:\MySymbols;\\someshare
Menggunakan server simbol: srv*
Jika Anda terhubung ke Internet atau jaringan perusahaan, cara paling efisien untuk mengakses simbol adalah dengan menggunakan server simbol seperti server simbol publik Microsoft publik. Anda dapat menggunakan server simbol dengan menggunakan salah satu string berikut di jalur simbol Anda.
String
srv*
Jika Anda menyertakan string
srv*
di jalur simbol Anda, debugger menggunakan server simbol untuk mendapatkan simbol dari penyimpanan simbol default. Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari penyimpanan simbol default. Simbol-simbol ini tidak di-cache di komputer lokal..sympath srv*
String
srv*symbolstore
Jika Anda menyertakan string
srv*symbolstore
di jalur simbol Anda, debugger menggunakan server simbol untuk mendapatkan simbol dari penyimpan simbol. Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari penyimpanan server simbol Microsoft. Simbol-simbol ini tidak di-cache di komputer lokal..sympath srv*https://msdl.microsoft.com/download/symbols
String
srv*localsymbolcache*symbolstore
Jika Anda menyertakan string
srv*localcache*symbolstore
di jalur simbol Anda, debugger menggunakan server simbol untuk mendapatkan simbol dari penyimpan simbol dan menyimpannya di direktori localcache . Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari server simbol Microsoft -https://msdl.microsoft.com/download/symbols
dan menyimpan simbol di .c:\MyServerSymbols
.sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Jika Anda memiliki direktori di komputer tempat Anda menempatkan simbol secara manual, jangan gunakan direktori tersebut sebagai cache untuk simbol yang diperoleh dari server simbol. Sebagai gantinya, gunakan dua direktori terpisah. Misalnya, Anda dapat menempatkan simbol c:\MyRegularSymbols
secara manual dan kemudian menunjuk c:\MyServerSymbols
sebagai cache untuk simbol yang diperoleh dari server. Contoh berikut menunjukkan cara menentukan kedua direktori di jalur simbol Anda.
.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Untuk informasi selengkapnya tentang server simbol dan penyimpanan simbol, lihat Penyimpanan simbol kustom dan server simbol.
Gabungkan cache* dan srv*
Jika Anda menyertakan string cache*;
di jalur simbol Anda, simbol yang dimuat dari elemen apa pun yang muncul di sebelah kanan string ini disimpan dalam direktori singgahan simbol default di komputer lokal. Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari penyimpanan server simbol Microsoft dan menyimpannya di direktori cache simbol default.
.sympath cache*;srv*https://msdl.microsoft.com/download/symbols
Jika Anda menyertakan string cache*localsymbolcache;
di jalur simbol Anda, simbol yang dimuat dari elemen apa pun yang muncul di sebelah kanan string ini disimpan di direktori localsymbolcache .
Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari penyimpanan server simbol Microsoft dan menyimpan simbol di c:\MySymbols
direktori.
.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols
Menggunakan AgeStore untuk mengurangi ukuran cache
Anda dapat menggunakan alat AgeStore untuk menghapus file cache yang lebih lama dari tanggal yang ditentukan, atau untuk menghapus file lama yang cukup sehingga ukuran cache yang dihasilkan kurang dari jumlah yang ditentukan. Pembersihan file cache ini berguna jika penyimpanan hilir Anda terlalu besar.
Pemuatan simbol malas
Perilaku default debugger adalah menggunakan pemuatan simbol malas, juga dikenal sebagai pemuatan simbol yang ditangguhkan. Pemuatan semacam ini berarti bahwa simbol tidak dimuat sampai diperlukan.
Ketika jalur simbol diubah, misalnya dengan menggunakan perintah .sympath, semua modul yang dimuat dengan simbol ekspor dimuat ulang dengan malas.
Simbol modul dengan simbol PDB penuh dimuat ulang dengan malas jika jalur baru tidak lagi menyertakan jalur asli yang digunakan untuk memuat simbol PDB. Jika jalur baru masih menyertakan jalur asli ke file simbol PDB, simbol tersebut tidak dimuat ulang dengan malas.
Anda dapat menonaktifkan pemuatan simbol malas di CDB dan KD dengan menggunakan opsi baris perintah -s. Anda juga dapat memaksa pemuatan simbol dengan menggunakan perintah simbol beban ld atau dengan menggunakan perintah .reload module bersama dengan /f
opsi .
Artefak Layanan Azure DevOps
Server simbol tersedia dengan Azure Artifacts di Azure DevOps Services. Untuk mempelajari tentang bekerja dengan Artefak Azure di WinDbg, lihat Debug dengan simbol di WinDbg. Untuk informasi umum tentang simbol yang dihasilkan Azure, lihat Gambaran umum simbol.
Mengontrol jalur simbol
Untuk mengontrol jalur simbol, Anda dapat memilih salah satu metode berikut:
Gunakan perintah jalur penyimpanan simbol .symfix set untuk mengatur jalur default ke server simbol Microsoft publik yang berfungsi dengan baik dalam banyak situasi. Untuk mengatur cache lokal, cukup ketik
.symfix C:\MyCache
.Gunakan perintah .sympath untuk menampilkan, mengatur, mengubah, atau menambahkan ke jalur.
Sebelum Anda memulai debugger, gunakan
_NT_SYMBOL_PATH
variabel lingkungan dan_NT_ALT_SYMBOL_PATH
untuk mengatur jalur. Jalur simbol dibuat dengan menambahkan_NT_SYMBOL_PATH
setelah_NT_ALT_SYMBOL_PATH
. Biasanya, jalur diatur melalui_NT_SYMBOL_PATH
. Namun, Anda mungkin ingin menggunakan_NT_ALT_SYMBOL_PATH
untuk mengambil alih pengaturan ini dalam kasus khusus, seperti jika Anda memiliki versi privat file simbol bersama. Jika Anda mencoba menambahkan direktori yang tidak valid melalui variabel lingkungan ini, debugger mengabaikan direktori ini.Saat Anda memulai debugger, gunakan opsi baris perintah -y untuk mengatur jalur.
Hanya di WinDbg, Anda dapat menggunakan File | Perintah Jalur File Simbol atau tekan
CTRL+S
untuk menampilkan, mengatur, mengubah, atau menambahkan ke jalur.
Jika Anda menggunakan opsi baris perintah -sins, debugger mengabaikan variabel lingkungan jalur simbol.
Pemecahan Masalah
Gunakan !sym noisy atau Opsi Baris Perintah -n WinDbg untuk menampilkan detail tambahan saat simbol dimuat. Untuk strategi pemecahan masalah tambahan, lihat Memverifikasi Simbol.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk