Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jalur simbol menentukan lokasi di mana debugger Windows seperti WinDbg, KD, CDB, dan NTST mencari file simbol.
Memulai dengan cepat: Gunakan perintah .symfix untuk menyiapkan jalur bawaan ke server simbol publik Microsoft—ini berfungsi dengan baik di sebagian besar skenario debug.
Konfigurasikan jalur simbol dengan benar untuk mengaktifkan penelusuran kesalahan yang efisien—debugger kemudian dapat secara otomatis menemukan dan memuat file simbol yang diperlukan untuk menganalisis eksekusi kode. Panduan ini menunjukkan kepada Anda cara menyiapkan jalur simbol, menggunakan server simbol Microsoft, simbol cache secara lokal, dan memecahkan masalah umum. 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 Anda membangun file yang dapat dieksekusi, 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.
Tips
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. Misalnya, C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.
Jalur relatif didukung. Namun, Anda harus menambahkan huruf drive atau path jaringan sebelum setiap path, kecuali Anda selalu menjalankan debugger dari direktori yang sama. Berbagi jaringan juga didukung.
Untuk setiap direktori di jalur simbol, debugger mencari di tiga direktori. Misalnya, jika jalur simbol menyertakan C:\Dir1 dan debugger mencari informasi simbol untuk DLL, debugger mencari dalam urutan ini:
C:\Dir1\symbols\dllC:\Dir1\dllC:\Dir1
Debugger mengulangi proses ini untuk setiap direktori di jalur simbol.
Lokasi cadangan akhir:
- Direktori saat ini
- Direktori saat ini dengan
..\dll,..\exe, atau..\sysditambahkan (tergantung pada jenis biner yang sedang 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 bahwa 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.
Mengontrol jalur simbol
Untuk mengontrol jalur simbol, pilih salah satu metode berikut:
Gunakan perintah .symfix set jalur penyimpanan simbol untuk mengatur jalur default ke server simbol Microsoft publik yang berfungsi dengan baik dalam banyak situasi. Untuk mengatur cache lokal, ketik
.symfix C:\MyCache.Gunakan perintah .sympath untuk menampilkan, mengatur, mengubah, atau menambahkan ke jalur.
Sebelum Anda memulai debugger, gunakan variabel lingkungan
_NT_SYMBOL_PATHdan_NT_ALT_SYMBOL_PATHuntuk mengatur jalur. Jalur simbol dibuat dengan menambahkan_NT_SYMBOL_PATHsetelah_NT_ALT_SYMBOL_PATH. Biasanya, Anda mengatur jalur melalui_NT_SYMBOL_PATH. Namun, Anda mungkin ingin menggunakan_NT_ALT_SYMBOL_PATHuntuk 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, gunakan File | Symbol File Path atau tekan
CTRL+Suntuk menampilkan, mengatur, mengubah, atau menambahkan ke jalur.
Jika Anda menggunakan opsi baris perintah -sins, debugger akan mengabaikan variabel lingkungan jalur simbol.
Menyimpan simbol cache secara lokal
Sebaiknya cache simbol secara lokal untuk meningkatkan performa debugger dan mengurangi lalu lintas jaringan. Untuk menyimpan simbol, sertakan cache*; atau cache*localsymbolcache; di jalur simbol Anda.
Jika Anda menyertakan string cache*; di jalur simbol Anda, debugger menyimpan simbol yang dimuatnya dari elemen apa pun yang muncul di sebelah kanan string ini di direktori cache 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, debugger menyimpan simbol yang dimuatnya dari elemen apa pun yang muncul di sebelah kanan string ini di direktori localsymbolcache .
Misalnya, perintah berikut memberi tahu debugger untuk mengambil simbol dari share jaringan \\someshare dan menyimpan simbol tersebut di direktori c:\MySymbols.
.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 publik server simbol publik Microsoft. 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 menginstruksikan debugger agar mendapatkan simbol dari toko simbol default. Simbol-simbol ini tidak di-cache di komputer lokal..sympath srv*String
srv*symbolstoreJika Anda menyertakan string
srv*symbolstoredi jalur simbol Anda, debugger menggunakan server simbol untuk mendapatkan simbol dari symbolstore. Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari server simbol Microsoft store. Simbol-simbol ini tidak di-cache di komputer lokal..sympath srv*https://msdl.microsoft.com/download/symbolsString
srv*localsymbolcache*symbolstoreJika Anda menyertakan string
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/symbolsdan menyimpan simbol dic:\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 secara manual di c:\MyRegularSymbols lalu menunjuk c:\MyServerSymbols sebagai cache untuk simbol yang diperoleh dari server. Contoh berikut menunjukkan cara menentukan kedua direktori pada jalur simbol milik 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, debugger menyimpan simbol yang dimuatnya dari elemen apa pun yang muncul di sebelah kanan string ini di direktori cache simbol default di komputer lokal. Misalnya, perintah berikut memberi tahu debugger untuk mengambil simbol dari 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, debugger menyimpan simbol yang dimuatnya dari elemen apa pun yang muncul di sebelah kanan string ini di direktori localsymbolcache .
Misalnya, perintah berikut memberi tahu debugger untuk mendapatkan simbol dari server simbol Microsoft menyimpan dan menyimpan simbol di direktori c:\MySymbols.
.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols
Menggunakan AgeStore untuk mengurangi ukuran cache
Anda dapat menggunakan alat
Pemuatan simbol secara malas
Debugger menggunakan pemuatan simbol tunda secara default. Pemuatan semacam ini berarti debugger tidak memuat simbol sampai membutuhkannya.
Saat Anda mengubah jalur simbol, misalnya dengan menggunakan perintah .sympath, debugger secara lambat memuat ulang semua modul yang telah dimuat dengan simbol ekspor.
Debugger dengan malas memuat ulang simbol modul dengan simbol PDB penuh 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, debugger tidak memuat ulang simbol tersebut secara otomatis.
Anda dapat menonaktifkan pemuatan simbol lambat di CDB dan KD dengan menggunakan opsi baris perintah -s. Anda juga dapat memaksa pemuatan simbol dengan menggunakan perintah ld load symbols atau dengan menggunakan perintah modul .reload bersama dengan opsi /f.
Artefak Layanan Azure DevOps
Server simbol tersedia dengan Artefak Azure di Azure DevOps Services. Untuk mempelajari tentang menggunakan Artefak Azure di WinDbg, lihat melakukan debugging dengan simbol di WinDbg (Artefak Azure). Untuk informasi umum tentang simbol yang dihasilkan Azure, lihat gambaran umum Simbol (Azure Artifacts).
Pemecahan masalah
Gunakan !sym noisy atau opsi -nWinDbg Command-Line untuk menampilkan detail tambahan saat simbol dimuat. Untuk strategi pemecahan masalah tambahan, lihat Memverifikasi Simbol.
Langkah selanjutnya
Sekarang setelah Anda mengonfigurasi jalur simbol, pelajari cara memverifikasi bahwa simbol dimuat dengan benar dan memecahkan masalah umum:
Tugas terkait:
Referensi perintah: