WinDBG: Criando arquivos de Dump
Neste quarto post da série vou demonstrar como criar arquivos de Dump.
Conceitos
Um arquivo de Dump representa o estado de um determinado processo. O grande objetivo por trás destes arquivos é possibilitar a análise de problemas sem utilizar o chamado live debugging. Uma vez criado o arquivo, a análise pode ser realizada a qualquer momento e em qualquer máquina*. Este procedimento é muito comum quando equipes distintas trabalham em conjunto para a resolução de hangs ou crashs. Uma equipe responsável pelo processo gera o Dump e outra equipe analisa o arquivo através de WinDBG.
Existem dois tipos de arquivos de Dump, Full e Mini.
O arquivo Full Dump contém todos os dados de memória do processo, o executável, entre outras informações. Já nos arquivos Mini Dump, o conteúdo pode ser variável, dependendo de onde foi gerado.
Nosso foco em todos os posts que envolvem arquivos de Dump será o Mini Dump, e esta opção será detalhada futuramente.
Ferramentas
Nós iremos utilizar a ferramenta Adplus para criar os arquivos de Dump, que já está presente na instalação do Debugging Tools for Windows. O arquivo - um script vbs - se encontra na raiz da instalação.
Adplus é uma ferramenta de linha de comando, criada pela equipe de suporte da Microsoft, para gerar informações sobre qualquer tipo de processo. No exemplo deste post, irei utilizar o adplus para gerar informações para o processo do IIS, ou w3wp.exe. Porém, esta ferramenta pode ser utilizada para qualquer processo, deste Console Applications, Windows Forms, WPF, Services, etc.
Modos de Execução
O Adplus pode ser utilizado de duas maneiras, hang ou crash:
- O modo Hang deve ser utilizado quando o processo apresenta um comportamento estranho ou alta utilização de CPU - nosso popular, "travar". Este modo deve ser executado depois que a aplicação se comportou de forma incorreta.
- O modo Crash deve ser utilizado quando o processo é finalizado inesperadamente. Este modo deve ser acionado antes do processo ser finalizado.
Configuração de ambiente
Para utilizarmos o Adplus corretamente, crie uma variável de ambiente chamada _NT_SYMBOL_PATH, para o caminho c:\symbols (crie esta pasta se não existir). Isto se refere aos símbolos de um processo, o que está fora do escopo deste post. Se você quiser saber mais sobre símbolos agora, acesse http://blogs.msdn.com/tess/archive/2005/12/05/500068.aspx.
Esta configuração não é obrigatória, apenas omite uma mensagem do Adplus, mas será realmente utilizada a partir do próximo post.
Utilização
A demonstração desta ferramenta está neste vídeo (10 minutos).
Conclusão
Este post rápido apresentou como gerar arquivos de Dump e como utilizá-los através do WinDBG. Existem outras maneiras de gerar este tipo de arquivo. Uma maneira muito conhecida é através da ferramenta DebugDiag.
Arquivos de Dump são o padrão para análise de problemas, evitando assim a presença de um profissional capacitado no momento de uma exceção e possibilitando o trabalhando em conjunto com outras equipes.
Espero que vocês tenham gostado deste post, até a próxima.
Links interessantes
http://support.microsoft.com/kb/286350
Abraços.