Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SymChk için temel söz dizimi aşağıdaki gibidir:
symchk [/r] FileNames /s SymbolPath
FileNames , simgeleri gereken bir veya daha fazla program dosyasını belirtir. FileNames bir dizinse ve /r bayrağı kullanılıyorsa, bu dizin özyinelemeli olarak incelenir ve SymChk bu dizin ağacındaki tüm program dosyaları için sembolleri bulmaya çalışır. SymbolPath , SymChk'in sembolleri nerede arayacağı belirtir.
Daha birçok komut satırı seçeneği vardır. Tam liste için bkz. SymChk Command-Line Seçenekleri.
Symchk'i edinin
Diğer hata ayıklama araçları gibi Symchk de hata ayıklayıcının bir parçası olarak birlikte geliyor. Daha fazla bilgi için bkz. Windows için Hata Ayıklama Araçları.
Hata ayıklama araçları yüklendikten sonra, 64 bit Windows için bu dizinde symchk kullanılabilir.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Örnek Kullanım
Belirtilen sembol yolu herhangi bir sayıda yerel dizin, UNC dizini veya sembol sunucusu içerebilir. Yerel dizinler ve UNC dizinleri özyinelemeli olarak aranmıyor. Yalnızca yürütülebilir dosyanın uzantısını temel alan belirtilen dizin ve alt dizin aranıyor. Örneğin, sorgu
symchk thisdriver.sys /s G:\symbols
, G:\mysymbols ve G:\mysymbols\sys dosyalarını arar.
Simge yolunuzun bir parçası olarak aşağıdaki söz dizimlerinden birini kullanarak bir sembol sunucusu belirtebilirsiniz:
srv*DownstreamStore*\\Server\Share
srv*\\Server\Share
Bu, hata ayıklayıcının sembol yolunda bir sembol sunucusu kullanmaya çok benzer. Bunun ayrıntıları için bkz. Sembol Sunucularını ve Sembol Depolarını Kullanma.
Aşağı akış deposu belirtilirse, SymChk sembol sunucusu tarafından bulunan tüm geçerli sembol dosyalarının kopyalarını alır ve aşağı akış deposuna yerleştirir. Yalnızca tam eşleşmeleri olan sembol dosyaları aşağı akışa kopyalanır.
SymChk, sembol sunucusunu sorgulamadan önce her zaman aşağı akış deposunu arar. Bu nedenle, başka biri sembol deposunun bakımını yaparken aşağı akış deposu kullanma konusunda dikkatli olmanız gerekir. SymChk'i bir kez çalıştırırsanız ve sembol dosyalarını bulursa, bunları aşağı akış deposuna kopyalar. Bu dosyalar simge deposunda değiştirildikten veya silindikten sonra SymChk'i yeniden çalıştırırsanız, SymChk bu gerçeği fark etmez, çünkü aşağı akış deposunda aradığını bulur ve daha fazla bakmaz.
Not SymChk, sembol sunucusu DLL'si olarak her zaman SymSrv (Symsrv.dll) kullanır. Öte yandan, hata ayıklayıcılar varsa SymSrv dışında bir sembol sunucusu DLL'sini seçebilir. (SymSrv, Windows için Hata Ayıklama Araçları paketinde bulunan sembol sunucusudur.)
Simgelerin özel mi yoksa genel mi olduğunu belirlemek için SymChk kullanma
Sembol dosyasının özel mi yoksa genel mi olduğunu belirlemek için /v parametresini kullanarak SymChk'in ayrıntılı çıktı görüntülemesini sağlayın. MyApp.exe ve MyApp.pdb'nin c:\sym klasöründe olduğunu varsayalım. Komutu girin.
symchk /v C:\sym\MyApp.exe /s C:\sym**
MyApp.pdb özel simgeler içeriyorsa, SymChk'in çıkışı şöyle görünür.
[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
MyApp.pdb yalnızca ortak semboller içeriyorsa, SymChk'in çıktısı şöyle görünür.
[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
Aramanızı yalnızca genel simge dosyalarını bulacak şekilde sınırlandırmak için /s parametresi (/ss) ile s seçeneğini kullanın. Aşağıdaki komut, MyApp.pdb yalnızca ortak simgeler içeriyorsa bir eşleşme bulur. MyApp.pdb özel simgeler içeriyorsa eşleşme bulamaz.
symchk /v C:\sym\MyApp.exe /s C:\sym
Daha fazla bilgi için bkz. Genel ve Özel Simgeler.
Örnekleri
Aşağıda bazı örnekler verilmiştir. Aşağıdaki komut, program Myapp.exeiçin sembolleri arar:
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
Farklı bir sembol yolu ile yeniden deneyebilirsiniz:
E:\debuggers> symchk F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Arama bu kez başarılı oldu. Ayrıntılı seçenek kullanılmazsa, SymChk yalnızca sembolleri bulamadığı dosyaları listeler. Bu nedenle bu örnekte hiçbir dosya listelenmedi. Artık "başarılı" kategorisinde bir dosya listelendiğinden ve "başarısız" kategorisinde hiçbiri olmadığından aramanın başarılı olduğunu anlayabilirsiniz.
Yürütülebilir kod içermeyen bir program dosyası yoksayılır. Birçok kaynak dosyası bu türdedir.
Tüm program dosyalarının dosya adlarını görmeyi tercih ediyorsanız, ayrıntılı çıkış oluşturmak için /v seçeneğini kullanabilirsiniz:
E:\debuggers> symchk /v F:\myapp.exe /s F:\symbols\newdirectory
SYMCHK: MyApp.exe PASSED
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
Aşağıdaki komut, bir sembol sunucusunda çok sayıda Windows simgesi arar. Çok çeşitli olası hata iletileri vardır:
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