Antecedentes: Sou novo no WinDbg e estou tentando executá-lo pela primeira vez. Desejo examinar um despejo de memória que tirei de um site em execução do ASP.NET 4 hospedado no IIS 7 no Windows Server 2008 (x86) e baixei na minha máquina local.
Instalei as ferramentas de depuração e iniciei o WinDbg pela primeira vez, abrindo o despejo de memória. Eu fui ao arquivo | Caminho do arquivo de símbolos e defina o caminho para *srv*c:\symbols*http://msdl.microsoft.com/download/symbols*
e espere que todos os símbolos sejam carregados.
Ao tentar carregar o SOS, tive problemas. Primeiro, tentei o seguinte comando ...
.loadby sos mscorwks
... e recebeu a resposta Unable to find module 'mscorwks'
.
Depois de vasculhar a web, tentei carregar o mscorwks executando o seguinte comando ...
sxe ld mscorwks.dll
g
... e recebeu a resposta "Nenhum erro de depuração executável em 'g'"
Copiei o SOS.dll (de C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319) para o diretório WinDbg e tentei ...
.load sos
... e recebeu o erro ...
The call to LoadLibrary(sos) failed, Win32 error 0n193
"%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.
Não tenho muita certeza de como proceder. Eu só quero carregar o SOS e vasculhar esse arquivo de despejo. Qualquer ajuda seria muito apreciada.
Fyi ... Estou tentando abrir o arquivo de despejo em uma versão de 64 bits do Windows 7 com a versão de 64 bits do Windbg.
.loadby sos clr
que entendoUnable to find module 'clr'
. Eu estou tentando depurar .NET 4 com x64 WinDbgsxe ld clr
para parar quando o CLR tiver sido carregado e carregar o SOS nesse ponto.O comando WinDbg 'g' significa [Continuar]
Como você está abrindo um arquivo de despejo, não há como 'continuar', ele contém apenas a memória do processo.
Portanto, a mensagem "Nenhum erro de depuração executável em 'g'" é lógica no seu caso, pois o processo não está em execução .
Em relação ao carregamento da versão correta do SOS, use o seguinte comando, dependendo da versão do .NET.
.NET 4 e superior .loadby sos
.NET 3.5 e 2 .loadby sos mscorwks
.NET 1.0 e 1.1 .load clr10 \ sos
fonte
As respostas acima precisam ser aprimoradas, pois ao longo do tempo as coisas ficaram mais fáceis de lidar com o carregamento sos.
JOHN ROBBINS tem um bom artigo , veja que os servidores de símbolos da Microsoft estão configurados no caminho do arquivo de símbolos e executam! Analyse -v no prompt do windbg, isso fará o truque de baixar arquivos sos relevantes. Para verificar, execute .chain no prompt e você verá a dll carregada.
fonte
Acabei de encontrar um problema semelhante ao carregar o SOS e estava recebendo "o módulo especificado não pôde ser encontrado". Como surgiu uma solução diferente, portanto, se as soluções aqui não ajudarem, tente o seguinte:
.loadby sos clr - o módulo especificado não pôde ser encontrado
fonte