O WinDbg leva muito tempo para carregar símbolos; está pesquisando todos os diretórios no armazenamento de símbolos UNC de rede grande

Passei vários dias tentando acelerar o carregamento de símbolos ao depurar despejos de memória usandoWinDbg, e não consigo superar um problema específico.

O problema é que, quando os símbolos de um módulo no despejo não existem em nenhum armazenamento de símbolos acessível ou local do servidor de símbolos (por exemplo, são módulos de terceiros sem símbolos disponíveis), o WinDbg passa literalmente horas procurando por eles.

Configurei meu caminho de símbolo corretamente para definir corretamente a ordem de pesquisa e os diretórios de cache:

.sympath cache*C:\SymbolCache1;\\our.corp\SymbolStore;SRV*C:\SymbolCache2*http://msdl.microsoft.com/download/symbols

Correndo com!sym noisy e.reload /f Eu consigo ver:

SYMSRV:  Notifies the client application that a proxy has been detected. 
SYMSRV:  Connecting to the Server: http://msdl.microsoft.com/download/symbols. 
SYMSRV:  Successfully connected to the Server. 
SYMSRV:  Sending the information request to the server. 
SYMSRV:  Successfully sent the information request to the server. 
SYMSRV:  Waiting for the server to respond to a request. 
SYMSRV:  Successfully received a response from the server. 
SYMSRV:  Closing the connection to the Server. 
SYMSRV:  Successfully closed the connection to the Server. 
SYMSRV:  c:\SymbolCache1\Some3rdParty.dll\0060D200cd1000\Some3rdParty.dll not found 
SYMSRV:  c:\SymbolCache2\Some3rdParty.dll\0060D200cd1000\Some3rdParty.dll not found 
SYMSRV:  http://msdl.microsoft.com/download/symbols/Some3rdParty.dll/0060D200cd1000/Some3rdParty.dll not found 
<---- !!!! hanging here with *BUSY* showing in WinDbg

CorrendoMonitor de Processo no ponto em que está pendurado, posso ver que o WinDbg está pesquisando o que parece sertodo diretório em nossa loja gigante de símbolos de rede (\ our.corp \ SymbolStore) procurando símbolos, mesmo em diretórios de módulos claramente não relacionados.

O estranho é que, no WinDbg, você pode ver que ele extraiu o registro de data e hora do módulo (0060D200cd1000) e o está usando para procurar o local esperado nos diretórios locais e no servidor de símbolos da MS. Não consigo entender por que ele está fazendo uma verificação completa de nossa (enorme) loja de símbolos de rede. Talvez haja algo único sobre como trata os caminhos UNC?

Essa pesquisa pode levar 15 minutos ou mais por símbolo e, se o despejo tiver muitos símbolos ausentes, isso poderá causar um!analyze -v levar horas (se você estiver usando a integração do WinDbg do Visual Studio, isso fará com que o travamento ocorra assim que você carregar um despejo de memória, pois, por algum motivo, a integração tenta carregar todos os símbolos imediatamente, apesar de.symopt configurações).

Esse problema também é facilmente reproduzível se você tentar carregar símbolos para um nome de módulo de composição inexistente, por exemplo,.reload /f bogus.dll.

Aqui estão minhas configurações do WinDbg .symopt:

0:000> .symopt
Symbol options are 0x30337:
  0x00000001 - SYMOPT_CASE_INSENSITIVE
  0x00000002 - SYMOPT_UNDNAME
  0x00000004 - SYMOPT_DEFERRED_LOADS
  0x00000010 - SYMOPT_LOAD_LINES
  0x00000020 - SYMOPT_OMAP_FIND_NEAREST
  0x00000100 - SYMOPT_NO_UNQUALIFIED_LOADS
  0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS
  0x00010000 - SYMOPT_AUTO_PUBLICS
  0x00020000 - SYMOPT_NO_IMAGE_SEARCH

Eu olhei por todo o lado pensando que deve haver alguma bandeira para controlar isso, mas não consigo encontrá-la.

Algumas coisas:

Este não é um problema com a velocidade da rede ou a falta de cache de símbolos local. O problema ocorre apenas com símbolos que não podem ser encontrados e apenas com o armazenamento de símbolos UNC (por exemplo, não com o servidor de símbolos da Microsoft)Eu já tentei SYMOPT_NO_PUBLICS em vez de SYMOPT_AUTO_PUBLICSEu verifiquei que o caminho do meu símbolo é o que eu esperava, usando osympath comando. Eu também tentei usar o_NT_SYMBOL_PATH variável de ambiente.Sei que posso excluir determinados símbolos por meio de um arquivo de configuração, mas essa não é uma solução viável porque, às vezes, o nome do símbolo ausente não é conhecido antecipadamenteVi alguém na Internet com esse mesmo problema e o mencionei em um fórum da Microsoft em um post intitulado "Desempenho ruim do WinDbg 6.11.1.404 quando apontado para um cache de símbolos grande"mas não recebeu ajuda.

questionAnswers(2)

yourAnswerToTheQuestion