Aracılığıyla paylaş


SymChk Kullanımı

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

Ayrıca Bkz.

SymChk Command-Line Seçenekleri

Sembol Sunucularını ve Sembol Depolarını Kullanma