Compartilhar via


Arquivos de despejo no modo de usuário

Neste artigo, obtenha uma visão geral dos arquivos de despejo do modo de usuário e como usá-los para ajudar a resolve bugs e falhas.

Para obter informações sobre como analisar um arquivo de despejo, consulte Analisar um arquivo de despejo no modo de usuário.

Tipos de arquivos de despejo no modo de usuário

Vários tipos de arquivos de despejo de falha no modo de usuário estão disponíveis. Os diferentes tipos de arquivos de despejo são divididos em duas categorias:

Você pode obter uma quantidade substancial de informações analisando um arquivo de despejo. No entanto, nenhum arquivo de despejo pode fornecer a quantidade de informações que você obtém com a depuração da falha usando um depurador.

Despejos completos no modo de usuário

Um despejo de modo de usuário completo é o arquivo de despejo básico do modo de usuário. Um arquivo de despejo de modo de usuário completo inclui:

  • Todo o espaço de memória de um processo.
  • A imagem executável do programa.
  • A tabela de identificador.
  • Outras informações que ajudam o depurador a reconstruir a memória que estava em uso quando o despejo ocorreu.

Você pode reduzir um arquivo de despejo de modo de usuário completo em um minidump. Para reduzir um arquivo de despejo de modo de usuário completo, primeiro, carregue o arquivo de despejo no depurador. Em seguida, use o comando .dump (Criar Arquivo de Despejo) para salvar um novo arquivo de despejo no formato de minidump.

Apesar de seus nomes, o maior arquivo de minidump contém mais informações do que o arquivo de despejo de modo de usuário completo. Por exemplo, os .dump /mf comandos e .dump /ma criam arquivos maiores e mais completos do que o .dump /f comando .

No modo de usuário, .dump /m[MiniOpções] geralmente é a melhor opção. Os arquivos de despejo criados usando essa opção podem variar de tamanho de muito pequeno para muito grande. Ao especificar a opção MiniOptions correta, você pode controlar exatamente quais informações estão incluídas.

Minidespejos

O tamanho e o conteúdo de um arquivo de minidump variam dependendo do programa que está sendo despejado e do aplicativo que está fazendo o despejo e das opções selecionadas. Às vezes, um arquivo de minidump é moderadamente grande e inclui a memória completa e a tabela de identificador. Outras vezes, o arquivo de minidump é muito menor. Por exemplo, um arquivo de minidump pode conter apenas informações sobre um único thread ou pode conter apenas informações sobre módulos referenciados na pilha.

O termo minidump é enganoso porque os maiores arquivos de minidump contêm mais informações do que um arquivo de despejo de modo de usuário completo. Por exemplo, .dump /mf ou .dump /ma cria um arquivo maior e mais completo do que .dump /f. Por esse motivo, recomendamos que você use .dump /m[MiniOpções] em vez de criar todos os arquivos de despejo no modo de .dump /f usuário.

Se você criar um arquivo de minidump usando o depurador, poderá escolher quais informações incluir. O .dump /m comando inclui informações básicas sobre os módulos carregados que compõem o processo de destino, as informações de thread e as informações de pilha. Você pode modificar o comando básico usando qualquer uma das opções de comutador descritas na tabela a seguir:

Opção .dump Efeito no arquivo de despejo
/ma Cria um minidump com todas as adições opcionais. A /ma opção é equivalente a /mfFhut. Ele adiciona dados de memória completa, manipula dados, informações de módulo descarregadas, informações básicas de memória e informações de tempo de thread ao minidump.
/mf Adiciona dados de memória completa ao minidump. Todas as páginas confirmadas acessíveis pertencentes ao aplicativo de destino estão incluídas.
/mF Adiciona todas as informações básicas de memória ao minidump. Essa opção adiciona um fluxo ao minidump que contém todas as informações básicas de memória, não apenas informações sobre memória válida. O depurador usa as informações para reconstruir o layout de memória virtual completo do processo quando o minidump está sendo depurado.
/mh Adiciona dados sobre os identificadores associados ao aplicativo de destino ao minidump.
/mu Adiciona informações de módulo descarregadas ao minidump. Essa opção está disponível apenas no Windows Server 2003 e versões posteriores do Windows.
/mt Adiciona mais informações de thread ao minidump. As informações do thread incluem tempos de thread, que podem ser exibidos usando .ttime (Tempos de Thread de Exibição) ao depurar o minidump.
/mi Adiciona memória secundária ao minidump. A memória secundária é qualquer memória referenciada por um ponteiro na pilha ou repositório de backup, além de uma pequena região ao redor desse endereço.
/mp Adiciona dados de bloco de ambiente de processo e bloqueio de ambiente de thread ao minidump. Essas informações poderão ser úteis se você precisar de acesso às informações do sistema Windows sobre os processos e threads do aplicativo.
/mw Adiciona todas as páginas privadas de leitura/gravação confirmadas ao minidump.
/md Adiciona todos os segmentos de dados de leitura/gravação dentro da imagem executável ao minidump.
/mc Adiciona seções de código em imagens.
/mr Exclui das partes de minidump da pilha e da memória de armazenamento que não são usadas para recriar o rastreamento de pilha. Variáveis locais e outros valores de tipo de dados também são excluídos. Essa opção não torna o minidump menor (as seções de memória não utilizado são zero), mas é útil se você quiser proteger a privacidade de outros aplicativos.
/mR Exclui os caminhos completos do módulo do minidump. Somente nomes de módulo são incluídos. Essa opção será útil se você quiser proteger a privacidade da estrutura de diretório do usuário.

Você pode combinar essas opções de comutador. Por exemplo, use o comando .dump /mfiu para criar um minidump moderadamente grande que contém memória descarregada e secundária. Use o comando .dump /mrR para criar um minidump que remove algumas das informações do usuário. Para obter detalhes completos da sintaxe, consulte .dump (Criar arquivo de despejo).

Ferramentas a serem usadas para criar um arquivo de despejo

Há várias ferramentas diferentes que você pode usar para criar um arquivo de despejo no modo de usuário:

  • ProcDump
  • CDB
  • WinDbg

ProcDump

O ProcDump é um utilitário de linha de comando que você pode usar para monitorar um aplicativo para picos de CPU e gerar despejos de memória durante um pico. Um administrador ou desenvolvedor pode usar os arquivos de despejo de memória para determinar a causa do pico. O ProcDump também inclui o monitoramento de janelas penduradas (usando a mesma definição de travamento de janela que o Windows e o Gerenciador de Tarefas usam) e exceções sem tratamento. Você pode usar o ProcDump para gerar despejos com base nos valores dos contadores de desempenho do sistema. O ProcDump também pode servir como um utilitário de despejo de processo geral que você pode inserir em outros scripts.

Para obter informações sobre como criar um arquivo de despejo no modo de usuário usando o utilitário Sysinternals ProcDump, consulte ProcDump.

CDB e WinDbg

O Depurador de Console (CDB) e o Depurador do Windows (WinDbg) são ferramentas de depuração incluídas no Kit de Desenvolvimento de Software do Windows e no Kit de Driver do Windows. Confira as opções de instalação em Baixar e instalar o depurador do WinDbg windows.

Você pode usar o CDB ou o WinDbg para criar arquivos de despejo no modo de usuário de várias maneiras:

  • Crie um arquivo de despejo automaticamente.
  • Crie arquivos de despejo ao depurar.
  • Reduzir um arquivo de despejo existente.

Para obter mais informações sobre as ferramentas, consulte Introdução com Depuração e Depuração do Windows usando o CDB.

Criar um arquivo de despejo automaticamente

Quando ocorre um erro de aplicativo, o Windows pode responder de várias maneiras, dependendo das configurações de depuração pós-morte. Se essas configurações instruir uma ferramenta de depuração a criar um arquivo de despejo, um arquivo de despejo de memória no modo de usuário será criado. Para obter mais informações, consulte Habilitar a depuração pós-morte.

Criar arquivos de despejo ao depurar

Quando o CDB ou o WinDbg estiver depurando um aplicativo no modo de usuário, você também poderá usar o comando .dump (Criar Arquivo de Despejo) para criar um arquivo de despejo.

Esse comando não faz com que o aplicativo de destino seja encerrado. Selecionando opções de comando específicas, você pode criar um arquivo de minidump que contém exatamente a quantidade de informações desejadas.

Reduzir um arquivo de despejo existente

Você pode usar CDB ou WinDbg para reduzir um arquivo de despejo. Para reduzir um arquivo de despejo, comece a depurar um arquivo de despejo existente. Em seguida, use o .dump comando para criar um arquivo de despejo de tamanho menor.

Depuração de viagem no tempo

Outra opção para depurar aplicativos no modo de usuário é a TTD (Depuração de Viagem no Tempo). O TTD é uma ferramenta que você pode usar para registrar seu processo enquanto ele é executado. Você pode reproduzir a gravação da sessão do depurador para localizar o bug. Você pode facilmente ir para diferentes partes da gravação para entender as condições que levaram ao bug e como corrigir o problema.

O TTD tem vantagens significativas em relação aos arquivos de despejo de memória, que geralmente não têm a execução do código que levou à falha. A capacidade de retroceder na execução do código pode ser útil para determinar a causa raiz.

Para obter mais informações, consulte a Visão geral da Depuração de Viagem no Tempo.

Próximas etapas