Episódio

Defrag Tools #167 - Depurando Despejos de Falha do Modo de Usuário Redux

Neste episódio de Defrag Tools, Andrew Richards e Chad Beeder usam Debugging Tools for Windows (WinDbg) para determinar a causa raiz de várias falhas de aplicativos que ocorreram no computador de Andrew. Usamos o Sysinternals ProcDump para capturar os dumps.

Durante a depuração, fazemos uma viagem paralela na configuração de cores para arquivos compactados e criptografados no Windows Explorer e usamos o Sysinternals Process Monitor para determinar por que o depurador estava recebendo um acesso negado ao carregar a extensão do depurador PDE.

Fizemos uma investigação semelhante nestes dois episódios:

Abordamos como instalar as Ferramentas de Depuração para Windows neste episódio:

Obtenha as ferramentas Sysinternals de http://www.sysinternals.com. Utilizamos:

Obtenha a extensão do depurador PDE a partir do OneDrive das Ferramentas de Desfragmentação

Obtenha o caminho do símbolo para o servidor de símbolos públicos da Microsoft:

Para coletar despejos de falhas em sua própria máquina, instale o ProcDump como o depurador Postmortem (AeDebugger):

md c:\dumps
procdump.exe -ma -i c:\dumps

Em qualquer dump (usuário ou kernel), você pode executar a análise automatizada para visualizar o problema:

!analisar -v

Depurando Cheat Sheet

  • c0000005 é uma violação de acesso - use .ecxr & k
  • c000027b é uma exceção armazenada (aplicativos da loja) - use !pde.dse
  • e0434352 é uma exceção CLR - use !sos.pe
  • e0697282 é uma exceção C++ - use .ecxr & k
  • 80000003 é um ponto de interrupção - use !analyze -v
  • Ao digitar um número decimal, prefixe-o "0n"
  • Ao digitar um número hexadecimal, prefixe-o "0x" (o prefixo padrão)

Comandos comuns do depurador

.exr -1

  • Exibir o código de exceção e os parâmetros de exceção
  • Número parecido com C0xxxxxx e 80xxxxxx são HRESULTs (Códigos de erro)
  • Número parecido com 7FFFxxxxxxxx são geralmente endereços de código (assembler)

!endereço

  • Exibir as informações de endereço - Comprometido/Reservado/Gratuito, Imagem/Mapeado/Privado
  • Usado para determinar se um número é código ou dados.

ln

  • Lista Endereço mais próximo
  • Exibe o símbolo no endereço ou perto dele
  • Usado para determinar se um número é código ou dados.

.ecxr

  • Altere o contexto de depuração para o ponto da exceção (em vez de estar no contexto do Relatório de Erros do Windows)

r

  • Veja os registos no contexto atual. (.ecxr produz a mesma saída)

k

  • Ver a pilha de chamadas

LMVM

  • Ver o módulo carregado detalhadamente com uma máscara
  • Ver os detalhes de um módulo, incluindo pasta, carimbo de data/hora, descrição, direitos de autor, versão do produto/ficheiro

| (Barra Vertical ou caractere Pipe)

  • Visualize o caminho do executável (por exemplo, c:\windows\notepad.exe)

!ext.error

  • Obtenha a descrição de um código de erro. Melhor na descrição de códigos de erro do sistema.

!pde.err

  • Obtenha a descrição de um código de erro. Bom em descrever HRESULTs (80xxxxxx e C0xxxxxx)

!pde.dpx

  • Raspe o thread atual em busca de evidências (símbolos, estruturas, strings, etc.)

.formatos

  • Exibe o número em vários formatos.
  • Maneira fácil de descobrir se um número é realmente texto ASCII, ou uma data / hora

!sos.pe

  • Exiba uma exceção CLR.
  • Se houver uma Exceção Interna, clique no link para visualizá-la.

.cordll -u & .cordll -l

  • Se o SOS não estiver carregado, tente fazer um descarregamento e carregamento do suporte CLR.

!peb

  • Visualize o Bloco de Ambiente de Processo (Módulos, Linha de Comando, Variáveis de Ambiente, etc.)

!teb

  • Visualize o Bloco de Ambiente do Thread atual (Intervalo de Pilha, Último Código de Erro, Último Código de Status, etc.)

!gle

  • Obter último erro
  • Exibir o último código de erro e o último código de status do thread atual

.cls

  • Limpe a tela.

.recarregar

  • Força uma recarga (download) de símbolos para os módulos na pilha atual.

.recarregar /f

  • Força uma recarga completa (download) de símbolos para os módulos na pilha atual.

Aplicações da Loja

Para ver as Aplicações da Loja atualmente instaladas e a sua versão de utilização:

Editor do Registro (regedit.exe)

  • HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\Package

PowerShell

Tem comentários? Submeta um problema aqui.