Bagikan melalui


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, , ..\exeatau ..\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

Simbol

Penggunaan SymSrv tingkat lanjut

Perintah .sympath

.symfix