Pergunta

Estou fazendo algo ruim no meu aplicativo ASP.NET.Pode ser qualquer número de bibliotecas CTP que estou usando ou simplesmente não estou descartando algo corretamente.Mas quando reimplanto meu ASP.NET na instalação do Vista IIS7 ou na instalação do IIS6 do meu servidor, travo um processo de trabalho do IIS.

Limitei o problema ao meu rastreador HTTP, que é uma fera multithread que rastreia sites em busca de informações úteis quando solicitado.Depois de iniciar um rastreador e reimplantar o aplicativo por cima, em vez de descarregar normalmente o appDomain e recarregar, um processo de trabalho do IIS falhará (aparecendo uma mensagem de falha) e continuará recarregando o domínio do aplicativo.

Quando essa falha ocorrer, onde posso encontrar o despejo de memória para análise?

Foi útil?

Solução

Baixe ferramentas de depuração para Windows:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

As Ferramentas de Depuração para Windows possuem um script (ADPLUS) que permite criar dumps quando um processo TRAVA:http://support.microsoft.com/kb/286350

O comando deve ser algo como (se você estiver usando IIS6):

cscript adplus.vbs -crash -pn w3wp.exe

Este comando anexará o depurador ao processo de trabalho.Quando a falha ocorrer, um dump será gerado (um arquivo *.DMP).

Você pode abri-lo no WinDBG (também incluído nas Ferramentas de depuração para Windows).Arquivo > Abrir despejo de memória...

Por padrão, o WinDBG mostrará (ao lado da linha de comando) o thread onde o processo travou.

A primeira coisa que você precisa fazer no WinDBG é carregar as extensões do .NET Framework:

.loadby sos mscorwks

então, você exibirá a pilha de chamadas gerenciada:

!clrstack

se o thread não estava executando código gerenciado, você precisará verificar a pilha nativa:

kpn 200

Isso deve lhe dar algumas idéias.Para continuar a solução de problemas, recomendo que você leia o seguinte artigo:

http://msdn.microsoft.com/en-us/library/ee817663.aspx

Outras dicas

Uma pesquisa rápida encontrada Estado IISS - depende do Ferramentas de depuração do Windows e precisa estar em execução quando ocorrer uma falha, mas dadas as circunstâncias que você descreveu, isso não deve ser um problema,

Você também pode usar DebugDiag para isso

Uma ótima explicação pode ser encontrada aqui:

http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx

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