Como você identifica (e tenha acesso aos) módulos / símbolos de depuração para uso quando fornecido um windows .DMP ou .minidmp

StackOverflow https://stackoverflow.com/questions/402314

Pergunta

De maneira na sequência lendo Windows * ficheiro.dmp

Tendo recebido um arquivo de despejo de cliente aleatório, executando a sessão de depuração para ver o acidente, você encontrará muitas vezes ele está em uma MS ou outra biblioteca de terceiros. A próxima questão é que você pode não ter conhecimento da configuração do PC, de tal forma que você pode garantir que você tem a verdade módulos disponíveis.

Por exemplo Atualmente estou preso tentando obter símbolos para carga para ntdll.dll (5.01.2600.5512). Em MSVC 2005, a coluna caminho na janela mostra a lista de módulos a * antes do nome de arquivo totalmente pathed, e se recusa a símbolos de carga eu tenha baixado para XP / SP1 / SP1a / SP2 / SP3.

Eu tenho a configuração do servidor símbolo para download no internet e armazenar em um cache local que parece ter sido funcionando bem para os módulos que eu tenho no meu PC. Usando GUI equivelant ao método

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

Talvez eu tenha os símbolos errados, mas como novos não estão baixando onde posso ir para a próxima? Eu tenho que entrar em contato com o cliente e perguntar o SP que tem instalado, e de quaisquer outros patches? Eu tenho que instalar essa máquina e, em seguida, executar o depurador com o arquivo dmp para obter os símbolos que preciso?

Foi útil?

Solução

O que você está usando para depurar o minidump? Ou seja, WinDBG ou Visual Studio? E como foi gerado o minidump?

Deve haver informação suficiente na minidump aos símbolos DLL do sistema resolver corretamente. Você está usando um local de download de símbolos ou http://msdl.microsoft.com/ ?

Update: Você deve ser capaz de adicionar o arquivo público símbolo Microsoft para Ferramentas> Opções> Debugging-> Symbols-> arquivo de símbolo (PDB) locais, e, em seguida, colocar manualmente os símbolos pelo botão direito sobre o módulo em a janela Módulos e carregá-los se não for feito automaticamente.

É possivelmente também (provavelmente) que VS 2005 não olha para _NT_SYMBOL_PATH aos símbolos determinação minidump.

Outras dicas

Se você estiver usando WinDbg (parte dos Debugging Tools for Windows pacote), então é simples para tê-lo puxar os símbolos certos para você a partir do Microsoft automaticamente. Configure o caminho de símbolo usando o ".symfix" (ou ".symfix +", simplesmente acréscimo para o seu actual símbolo da busca de trajeto) de comando.

Uma vez que você tem que fazer e você tem o despejo de memória carregado no WinDbg, digite ".reload / f" para causar WinDbg para recarregar os símbolos. Ele vai usar as informações dentro do próprio arquivo de despejo para puxar os símbolos corretos do servidor de símbolos públicos da Microsoft, independentemente do que DLLs que você tem em sua máquina.

Se por algum motivo os símbolos não estão carregando corretamente depois de ter feito isso, digite "! Barulhento sym" na janela de comando do WinDbg e recarregar os símbolos novamente. Como tentativas WINDBG para carregá-los, você vai ver que a saída quaisquer erros que ele encontra em seu processo de pesquisa / carga. Essas mensagens de erro irá ajudá-lo a diagnosticar melhor o que está acontecendo de errado e por que os símbolos corretos não estão sendo carregados.

Este post tem informações que podem também ser de uso.

Se você está digitando "Set _NT_SYMBOL_PATH = srv..." em um prompt de comando, há duas coisas a considerar:

  • comando cmd.exe de set não ignora espaços em branco, então isso define uma variável chamada "_NT_SYMBOL_PATH", não "_NT_SYMBOL_PATH".
  • Você deve iniciar o depurador como um filho desse prompt de comando. No entanto, você não tem que fazer isso se você usar o painel de controle para definir variáveis ??de ambiente persistentes, ou se você usar o comando setx (no Windows Vista ou um dos Resource Kits Windows).

Se você estiver configurando o caminho do símbolo de alguma outra forma, então isto não se aplica.

Tente seguir as instruções em este artigo kb , e verifique se o caminho do símbolo está configurado corretamente, que WinDbg tem acesso a ele, e que os símbolos NTDLL (por exemplo) são baixados para o cache símbolo. O artigo também fornece instruções sobre como fazer o download manualmente e verificar símbolos em você armazenar em cache através da ferramenta Symchk.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top