Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste artigo, obtenha uma visão geral dos arquivos de despejo de modo de usuário e como usá-los para ajudar a resolver bugs e falhas.
Para obter informações sobre como analisar um arquivo de despejo, consulte Analisar um arquivo de despejo de modo de usuário.
Tipos de arquivos de despejo de modo de usuário
Vários tipos de arquivos de despejo de memória no modo de usuário estão disponíveis. Os diferentes tipos de arquivos de despejo são divididos em duas categorias:
Pode obter uma quantidade considerável de informações ao analisar um ficheiro de despejo. No entanto, nenhum ficheiro de despejo pode fornecer a quantidade de informações que você obtém ao fazer o debugging do crash usando um depurador.
Despejos completos no modo de usuário
Um despejo de modo de usuário completo é o arquivo de despejo de modo de usuário básico. Um ficheiro de despejo completo de modo de utilizador inclui:
- Todo o espaço de memória de um processo.
- A imagem executável do programa.
- A tabela de alças.
- 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 ficheiro de despejo de modo de utilizador completo, comece por carregar o ficheiro de despejo no depurador. Em seguida, use o comando .dump (Create Dump File) para salvar um novo arquivo de despejo no formato minidump.
Apesar de seus nomes, o maior arquivo 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 utilizador, .dump /m[MiniOptions] é muitas vezes a melhor escolha. Os arquivos de despejo que você cria usando essa opção podem variar em tamanho de muito pequeno a muito grande. Ao especificar a opção MiniOptions correta, você pode controlar exatamente quais informações estão incluídas.
Minilixeiras
O tamanho e o conteúdo de um arquivo minidump variam dependendo do programa que está sendo despejado, do aplicativo que faz o despejo e das opções selecionadas. Às vezes, um arquivo minidump é moderadamente grande e inclui a memória completa e a tabela de manipulação. Outras vezes, o arquivo minidump é muito menor. Por exemplo, um arquivo 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 minidump contêm mais informações do que um arquivo de despejo completo no modo de usuário. 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[MiniOptions] em vez de .dump /f para criar todos os arquivos de despejo do modo de usuário.
Ao criar um arquivo minidump usando o depurador, você pode 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, informações de thread e informações de pilha. Você pode modificar o comando básico usando uma das seguintes opções de alternância:
.dump opção |
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, dados de manipulação, informações de módulo descarregado, informações básicas de memória e informações de tempo de thread para o 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 completo de memória virtual 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 do módulo descarregado ao minidump. Esta 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 de thread incluem tempos de thread, que você pode exibir usando .ttime (Display Thread Times) ao depurar o minidump. |
/mi |
Adiciona memória secundária ao minidump. Memória secundária é qualquer memória referenciada por um ponteiro na pilha ou na memória de apoio, além de uma pequena área circundante a esse endereço. |
/mp |
Adiciona os dados do bloco de ambiente de processo e do bloco de ambiente de thread ao minidump. Essas informações podem ser úteis se você precisar acessar as 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 ficheiro de 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 porções do minidump das partes da pilha e da memória que não são usadas para recriar o rastreamento da pilha. As 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 utilizadas são zeradas), mas é útil se você quiser proteger a privacidade de outros aplicativos. |
/mR |
Exclui do minidump os caminhos completos do módulo. Apenas os nomes dos módulos estão incluídos . Esta opção é útil se você quiser proteger a privacidade da estrutura de diretórios do usuário. |
Você pode combinar essas opções de switch. Por exemplo, use o comando .dump /mfiu para criar um minidump moderadamente grande que contenha memória descarregada e secundária. Use o comando .dump /mrR para criar um minidump que remova 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
Você pode usar várias ferramentas diferentes para criar um arquivo de despejo de modo de usuário:
ProcDump
ProcDump é um utilitário de linha de comando que pode ser utilizado para monitorizar uma aplicação durante picos de CPU e gerar ficheiros de crash durante um pico. Um administrador ou desenvolvedor pode usar os ficheiros de crash dump para determinar a causa do pico. O ProcDump também inclui monitoramento para janelas suspensas (usando a mesma definição de travamento de janela que o Windows e o Gerenciador de Tarefas usam) e exceções não tratadas. Você pode usar o ProcDump para gerar dumps com base nos valores dos contadores de desempenho do sistema. ProcDump também pode servir como um utilitário de despejo de processo geral que você pode incorporar em outros scripts.
Para obter informações sobre como criar um arquivo de despejo de modo de usuário usando o utilitário Sysinternals ProcDump, consulte ProcDump.
WinDbg e CDB
O Depurador de Console (CDB) e o Depurador do Windows (WinDbg) são ferramentas de depuração incluídas no Windows Software Development Kit e no Windows Driver Kit. Para obter informações sobre as opções de instalação, consulte Baixar e instalar o depurador WinDbg do Windows.
Você pode usar CDB ou WinDbg para criar arquivos de despejo de modo de usuário de várias maneiras:
- Crie um arquivo de despejo automaticamente.
- Crie arquivos de despejo ao depurar.
- Reduza um arquivo de despejo existente.
Para obter mais informações sobre as ferramentas, consulte Introdução à depuração do Windows e Depuração do Windows usando 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 postmortem. Se essas configurações instruirem 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 Ativar depuração pós-morte.
Criar ficheiros de despejo ao depurar
Quando o CDB ou o WinDbg está a depurar uma aplicação em modo utilizador, também pode usar o comando .dump (Criar arquivo de despejo) para criar um arquivo de despejo.
Este comando não faz com que o aplicativo de destino seja encerrado. Ao selecionar opções de comando específicas, você pode criar um arquivo minidump que contém exatamente a quantidade de informações desejada.
Reduzir um arquivo de despejo existente
Você pode usar CDB ou WinDbg para reduzir um arquivo de despejo. Para reduzir um arquivo de despejo, inicie a depuração de um arquivo de despejo existente. Em seguida, use o comando para criar um arquivo de despejo .dump de um tamanho menor.
Depuração de viagem no tempo
Outra opção para depurar aplicações em modo utilizador é a Depuração de Viagem no Tempo (TTD). TTD é uma ferramenta que você pode usar para gravar seu processo enquanto ele é executado. Você pode reproduzir a gravação da sessão do depurador para encontrar 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 sobre os arquivos de despejo de falha, que muitas vezes estão faltando a execução do código que levou à falha. A capacidade de viajar para trás 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.
Ver também
- Saiba como analisar um arquivo de despejo no modo de usuário.
- Obtenha dicas para extrair informações de um arquivo de despejo.