Comece com a depuração no Windows

Este artigo explica como começar com a depuração do Windows usando o WinDbg e outras ferramentas de depuração. Você aprenderá como:

  • Instalar o depurador e configurar o sistema anfitrião e sistema de destino
  • Configura seu ambiente de depuração
  • Domine técnicas essenciais de depuração para cenários de modo kernel e modo usuário

Observação

Se você quiser analisar um despejo de memória, consulte Extrair informações de um arquivo de despejo.

Para começar a depuração do Windows, conclua as etapas a seguir.

1. Instalar o depurador de Windows

Instale o WinDbg para iniciar a depuração de aplicativos e drivers do Windows. Para obter etapas detalhadas de instalação, consulte Instalar o WinDbg.

2. Identificar os sistemas de host e de destino

Normalmente, você usa dois sistemas de computador separados para depuração porque o processo normalmente pausa a execução de instruções no processador. O depurador é executado no sistema de host, e o código que você deseja depurar é executado no sistema de destino.

Host <--------------------------------------------------> Destino

Captura de tela de um diagrama mostrando uma seta dupla conectando sistemas de host e depuração de destino.

Em algumas situações, você pode usar uma máquina virtual como o segundo sistema. Por exemplo, um computador virtual pode ser executado no mesmo computador que o código que você precisa depurar. No entanto, se seu código comunica com hardware de baixo nível, usar um computador virtual pode não ser a melhor abordagem. Para obter mais informações, consulte Como configurar a depuração de rede de uma máquina virtual - KDNET

3. Determinar o tipo de depurador: modo kernel ou modo de usuário

Em seguida, determine se deve usar a depuração no modo kernel ou no modo de usuário.

  • O sistema operacional e os programas privilegiados são executados no modo kernel . O código do modo kernel tem permissão para acessar qualquer parte do sistema e não é restrito como código de modo de usuário. O código do modo kernel pode acessar qualquer parte de qualquer outro processo em execução no modo de usuário ou no modo kernel. Grande parte da funcionalidade principal do sistema operacional e muitos drivers de dispositivo de hardware são executados no modo kernel.

  • Aplicativos e subsistemas no computador são executados no modo de usuário . Os processos executados no modo de usuário fazem isso em seus próprios espaços de endereço virtual. Eles são impedidos de obter acesso direto a muitas partes do sistema, incluindo hardware do sistema, memória que não é alocada para uso e outras partes do sistema que podem comprometer a integridade do sistema. Os processos executados no modo de usuário são efetivamente isolados do sistema e de outros processos de modo de usuário, para que não possam interferir nesses recursos.

Se o seu objetivo é depurar um driver, determine se ele é um driver de modo kernel ou de modo de usuário. Os drivers do Modelo de Driver do Windows (WDM) e do Framework de Driver em Modo Kernel (KMDF) são ambos drivers em modo kernel. Como o nome sugere, os drivers User-Mode Driver Framework (UMDF) são drivers de modo de usuário.

Para alguns problemas, pode ser difícil determinar em qual modo o código é executado. Nesse caso, talvez seja necessário escolher um modo e ver quais informações estão disponíveis nesse modo. Alguns problemas exigem o uso do depurador no modo de usuário e no modo kernel.

Dependendo do modo em que você depura, talvez seja necessário configurar e usar os depuradores de maneiras diferentes. Alguns comandos de depuração operam da mesma forma em ambos os modos e alguns comandos operam de forma diferente.

Próximas etapas para depuração no modo núcleo

Próximas etapas para depuração do modo de usuário

4. Escolha seu ambiente de depurador

O depurador WinDbg funciona bem na maioria das situações, mas há momentos em que você pode querer usar outro depurador, como depuradores de console para automação ou Visual Studio. Para obter mais informações, consulte Ambientes de depuração.

5. Determinar como conectar o destino e o host

Normalmente, você conecta sistemas de destino e host usando uma rede Ethernet. Se você estiver fazendo o trabalho de inicialização antecipada ou não tiver uma conexão Ethernet em um dispositivo, outras opções de conexão de rede estarão disponíveis. Para obter mais informações, consulte estes artigos:

6. Escolha ferramentas de depuração de 32 bits ou 64 bits

Se você precisa de um depurador de 32 bits ou 64 bits depende da versão de Windows que é executada nos sistemas de destino e host e se você está depurando código de 32 bits ou 64 bits. Para obter mais informações, consulte Como escolher entre ferramentas de depuração de 32 bits ou 64 bits.

7. Configurar símbolos

Para usar todas as funcionalidades avançadas que o WinDbg fornece, você deve carregar os símbolos adequados. Se você não configurar corretamente símbolos, receberá mensagens indicando que os símbolos não estão disponíveis quando você tenta usar a funcionalidade que depende de símbolos. Para obter mais informações, consulte Símbolos para depuração do Windows.

8. Configurar o código-fonte

Se o seu objetivo for depurar seu próprio código-fonte, será necessário configurar um caminho para o código-fonte. Para obter mais informações, consulte Caminho de origem.

9. Familiarize-se com a operação do depurador

A seção Operação do depurador desta documentação descreve a operação do depurador para várias tarefas. Por exemplo, Manter um arquivo de log no WinDbg descreve como o WinDbg pode gravar um arquivo de log que registra a sessão de depuração.

10. Familiarize-se com as técnicas de depuração

Técnicas de depuração padrão se aplicam à maioria dos cenários de depuração e exemplos incluem a configuração de pontos de interrupção, a inspeção da pilha de chamadas e a localização de um vazamento de memória. Técnicas especializadas de depuração se aplicam a tecnologias ou tipos específicos de código. Os exemplos incluem depuração Plug and Play, depuração KMDF e depuração de RPC.

11. Use os comandos de referência do depurador

Use comandos de depuração diferentes enquanto trabalha no depurador. Para obter ajuda em qualquer comando durante a depuração, use o comando .hh seguido pelo nome do comando.

Exemplos:

.hh bp # Get help on breakpoint commands
.hh k # Get help on call stack commands

Para obter uma lista completa de comandos disponíveis, consulte Referência do Depurador.

12. Use extensões de depuração para tecnologias específicas

Use várias extensões de depuração para analisar estruturas de dados específicas do domínio. Para obter mais informações, consulte Extensões especializadas. Para obter informações sobre como carregar extensões de depurador, consulte Carregando DLLs de extensão do depurador.

Esta documentação pressupõe que você tenha algum conhecimento sobre os principais Windows internos. Para saber mais sobre Windows internos, incluindo uso de memória, contexto, threads e processos, examine recursos como Windows Internals por Pavel Yosifovich, Mark E. Russinovich, David A. Solomon e Alex Ionescu.

14. Revise recursos adicionais de depuração

Outros recursos incluem os seguintes livros e vídeos:

  • Depuração Interna do Windows: Depuração Prática e Estratégias de Rastreamento por Tarik Soulami
  • Depuração Avançada de Windows por Mario Hewardt e Daniel Pravat
  • Defrag Tools série de vídeos, episódios de 13 a 29, tudo sobre WinDbg

Próximas etapas

Escolha o modo de depuração para continuar:

Depuração no modo kernel (para drivers e componentes do sistema operacional):

Depuração do modo de usuário (para aplicativos):

Diretrizes adicionais de instalação: