Estou analisando um despejo de memória de um processo de trabalho do IIS em execução no Windows Server 2008 na minha estação de trabalho do Windows 8. O despejo é um mini despejo feito usando o gerenciador de tarefas. As versões do Framework no servidor e na estação de trabalho são diferentes: Servidor onde o despejo foi tirado: 4.0.30319.296 Copiei sos. dll e mscordacwks. dll do servidor para a minha estação de trabalho em um diretório dedicado e, em seguida, abri o despejo no WinDbg. Então eu carrego o sos. dll copiado do servidor: Isso me permite listar os tópicos usando threads ou ver pilhas usando clrstack. Mas ao usar pe ou clrstack, recebo um aviso de incompatibilidade de versão: enquanto eu podia ver as pilhas que me interessavam, estou confuso sobre a versão CLR no aviso: de onde é que esta versão vem. O despejo indica a versão 4.0.30319.1 quando eu executo Mas 4.0.30319.1 não é usado neste caso, nem no servidor nem na estação de trabalho. Ou estou faltando algo Além disso, o WinDbg carrega os arquivos de símbolos para mscordacwksAMD64AMD644.0.30319.01.dll para o meu diretório de símbolos. Saída de. cordll: Eu também tentei copiar clr. dll do servidor para minha estação de trabalho e carregar o tempo de execução usando. cordll, mas sem sucesso: Alguém pode lançar alguma luz sobre este problema de versão. É de alguma forma relacionado ao tipo de despejo usado. Tentando usar o WinDBG para analisar um despejo de uma das nossas máquinas de produção. A raiz do meu problema parece ser que eu tenho uma construção diferente da estrutura do que a máquina de produção, só que não sei como resolver o problema. Quando eu giro sym noisy e depois execute dlk (do SOSEX), recebo o seguinte erro ao tentar encontrar o mscordacwks dll. Peguei o mscorwks. dll, mscordawks. dll e sos. dll da máquina de produção e os coloquei em C: Mysymbols. Parece que o WinDBG está procurando uma DLL DENTRO da dcl mscorwks. Perguntou em 3 de fevereiro 12 às 14:05 E, basicamente, tentando cada encarnação de símbolos em movimento ao redor do que pude, achei que a única maneira de conseguir isso funcionar era copiar o mscorwks. dll, mscordawks. dll e sos. dll do Máquina de produção em C: WINDOWSMicrosoftFrameworkv2.0.50727 Parece que o WinDBG não funciona tão bem com a versão múltipla da mesma DLL. Talvez eu fiz algo errado, mas copiar as dlls diretamente para o diretório do Framework, pelo menos, me levou a funcionar. Respondeu em 3 de fevereiro 12 às 14:28. Não é por causa do WinDbg não lidar com várias versões do mscordacwks. dll, mas usa o algoritmo de design por subsele para consultá-los (como tem tantas versões de patches), qual é o estilo que você se adapta Para ativamente. Uma vez que você se acostume com esse fato, você nunca enfrentará muitos problemas no futuro. Ndash Lex Li Mar 5 12 às 6:35 Além da resposta CodeFoxs, você precisa colocar o diretório onde o mscorwks. dll (ou clr. dll se você estiver usando 4) no caminho do arquivo de imagem no WinDbg (fora do menu Arquivo ).
No comments:
Post a Comment