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.
Sintaks dasar untuk SymChk adalah sebagai berikut:
symchk [/r] FileNames /s SymbolPath
FileNames menentukan satu atau beberapa file program yang simbolnya diperlukan. Jika FileNames adalah direktori dan bendera /r digunakan, direktori ini dieksplorasi secara rekursif, dan SymChk akan mencoba menemukan simbol untuk semua file program di pohon direktori ini. SymbolPath menentukan tempat SymChk mencari simbol.
Ada lebih banyak opsi baris perintah. Untuk daftar lengkapnya, lihat Opsi Command-Line SymChk.
Mendapatkan symchk
Symchk, seperti alat penelusuran kesalahan lainnya, disertakan sebagai bagian dari debugger. Untuk informasi selengkapnya, lihat Alat Penelusuran Kesalahan untuk Windows.
Setelah alat penelusuran kesalahan diinstal, symchk tersedia di direktori ini untuk Windows 64-bit.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Contoh Penggunaan
Jalur simbol yang ditentukan dapat mencakup sejumlah direktori lokal, direktori UNC, atau server simbol. Direktori lokal dan direktori UNC tidak dicari secara rekursif. Hanya direktori yang ditentukan dan subdirektori berdasarkan ekstensi executable yang dicari. Misalnya, kueri
symchk thisdriver.sys /s G:\symbols
akan melakukan pencarian di G:\mysymbols dan G:\mysymbols\sys.
Anda dapat menentukan server simbol dengan menggunakan salah satu sintaks berikut sebagai bagian dari jalur simbol Anda:
srv*DownstreamStore*\\Server\Share
srv*\\Server\Share
Ini sangat mirip dengan menggunakan server simbol di jalur simbol debugger. Untuk detail tentang ini, lihat Menggunakan Server Simbol dan Penyimpanan Simbol.
Jika penyimpanan hilir ditentukan, SymChk akan membuat salinan semua file simbol valid yang ditemukan oleh server simbol dan menempatkannya di penyimpanan hilir. Hanya file simbol yang cocok sepenuhnya yang diteruskan ke hilir.
SymChk selalu mencari toko hilir sebelum melakukan kueri pada server simbol. Oleh karena itu Anda harus berhati-hati menggunakan toko hilir ketika orang lain memelihara toko simbol. Jika Anda menjalankan SymChk sekali dan menemukan file simbol, SymChk akan menyalinnya ke penyimpanan hilir. Jika Anda kemudian menjalankan SymChk lagi setelah file-file ini diubah atau dihapus di penyimpanan simbol, SymChk tidak akan melihat fakta ini, karena akan menemukan apa yang dicari di penyimpanan simbol hilir dan tidak akan mencari lebih lanjut.
Nota SymChk selalu menggunakan SymSrv (Symsrv.dll) sebagai DLL server simbolnya. Di sisi lain, debugger dapat memilih DLL server simbol selain SymSrv jika tersedia. (SymSrv adalah server simbol yang disertakan dalam paket Alat Debugging untuk Windows.)
Menggunakan SymChk untuk menentukan apakah simbol bersifat privat atau publik
Untuk menentukan apakah file simbol bersifat privat atau publik, gunakan parameter /v sehingga SymChk menampilkan output verbose. Misalkan MyApp.exe dan MyApp.pdb ada di folder c:\sym. Masukkan perintah ini.
symchk /v C:\sym\MyApp.exe /s C:\sym**
Jika MyApp.pdb berisi simbol privat, output SymChk terlihat seperti ini.
[SYMCHK] Searching for symbols to c:\sym\MyApp.exe in path c:\sym
...
DBGHELP: MyApp - private symbols & lines
c:\sym\MyApp.pdb
...
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Jika MyApp.pdb hanya berisi simbol publik, output SymChk terlihat seperti ini.
[SYMCHK] Searching for symbols to c:\sym\MyApp.exe in path c:\sym
...
DBGHELP: MyApp - public symbols
c:\sym\MyApp.pdb
...
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Untuk membatasi pencarian Anda sehingga hanya menemukan file simbol publik, gunakan opsi s dengan parameter /s (/ss). Perintah berikut menemukan kecocokan jika MyApp.pdb hanya berisi simbol publik. Ini tidak menemukan kecocokan jika MyApp.pdb berisi simbol privat.
symchk /v C:\sym\MyApp.exe /s C:\sym
Untuk informasi selengkapnya, lihat Simbol Publik dan Privat.
Contoh
Berikut adalah beberapa contohnya. Perintah berikut mencari simbol untuk program Myapp.exe:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\applications
SYMCHK: Myapp.exe FAILED - Myapp.pdb is missing
SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 0
Anda dapat mencoba lagi dengan jalur simbol yang berbeda:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Pencarian berhasil kali ini. Jika opsi verbose tidak digunakan, SymChk hanya akan mencantumkan file yang gagal menemukan simbol. Jadi dalam contoh ini tidak ada file yang terdaftar. Anda dapat mengetahui bahwa pencarian berhasil karena sekarang ada satu file yang tercantum dalam kategori "berhasil" dan tidak ada dalam kategori "gagal".
File program diabaikan jika tidak berisi kode yang dapat dieksekusi. Banyak file sumber daya berjenis ini.
Jika Anda lebih suka melihat nama file dari semua file program, Anda dapat menggunakan opsi /v untuk menghasilkan output verbose:
E:\debuggers> symchk /v F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: MyApp.exe PASSED
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Perintah berikut mencari sejumlah besar simbol Windows di server simbol. Ada berbagai kemungkinan pesan kesalahan:
E:\debuggers> symchk /r C:\windows\system32 /s srv*\\manysymbols\windows
SYMCHK: msisam11.dll FAILED - MSISAM11.pdb is missing
SYMCHK: msuni11.dll FAILED - msuni11link.pdb is missing
SYMCHK: msdxm.ocx FAILED - Image is split correctly, but msdxm.dbg i
s missing
SYMCHK: expsrv.dll FAILED - Checksum doesn't match with expsrv.DBG
SYMCHK: imeshare.dll FAILED - imeshare.opt.pdb is missing
SYMCHK: ir32_32.dll FAILED - Built with no debugging information
SYMCHK: author.dll FAILED - rpctest.pdb is missing
SYMCHK: msvcrt40.dll FAILED - Built with no debugging information
......
SYMCHK: FAILED files = 211
SYMCHK: PASSED + IGNORED files = 4809