Introdução à depuração do Windows

Este artigo aborda como começar a depuração para Windows. Se o seu objetivo for usar o depurador para analisar um despejo de falha, consulte Analisar arquivos de despejo de memória usando o WinDbg.

Para começar a usar a depuração do Windows, siga as etapas abaixo.

1. Identifique os sistemas host e de destino

Normalmente são usados dois sistemas de computador separados para depuração, pois a execução de instruções no processador é comumente pausada durante o processo. O depurador é executado no sistema host, e o código que você deseja depurar é executado no sistema de destino.

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

Diagram illustrating the connection between host and target systems with a double arrow.

Em algumas situações, é possível usar uma máquina virtual como o segundo sistema. Por exemplo, um PC virtual pode ser executado no mesmo PC que o código que você precisa depurar. No entanto, se o código se comunicar com hardware de baixo nível, usar um PC virtual poderá 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

2. Determine o tipo de depurador: modo kernel ou modo de usuário

Em seguida, você precisa determinar se deseja 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 o código do modo de usuário. O código do modo kernel pode obter acesso a 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 dentro de seus próprios espaços de endereço virtual. Eles estão impedidos de obter acesso direto a muitas partes do sistema, incluindo hardware do sistema, memória que não está alocada para seu 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, portanto, não podem 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 WDM (Windows Driver Model) e KMDF (Kernel-Mode Driver Framework) são drivers de modo kernel. Como o nome sugere, os drivers UMDF (User-Mode Driver Framework) 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ê depurar, 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.

Saiba mais sobre como usar o depurador no modo kernel:

Saiba mais sobre como usar o depurador no modo de usuário:

3. Escolha seu ambiente de depurador

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

4. Determine como conectar o destino e o host

Normalmente, os sistemas de destino e host são conectados por uma rede Ethernet. Se você estiver fazendo um trabalho de criaçã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, confira estes tópicos:

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

A versão necessária de um depurador de 32 bits ou 64 bits dependerá da versão do Windows que é executada nos sistemas de destino e host e de você estar 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.

6. Configure símbolos

Para usar toda a funcionalidade avançada que o WinDbg fornece, você deverá carregar os símbolos adequados. Se você não tiver símbolos configurados corretamente, receberá mensagens indicando que os símbolos não estarão disponíveis quando você tentar usar a funcionalidade que depende de símbolos. Para obter mais informações, consulte Símbolos para depuração do Windows.

7. Configure 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.

8. 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, Como carregar DLLs de extensão do depurador explica como carregar extensões do depurador.

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

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

10. Use os comandos de referência do depurador

Você pode usar diferentes comandos de depuração enquanto trabalha no depurador. Use o comando .hh no depurador para exibir informações úteis sobre qualquer comando de depuração. Para obter mais informações sobre comandos disponíveis, consulte Referência do depurador.

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

Há várias extensões de depuração que podem ser usadas para analisar estruturas de dados específicas do domínio. Para obter mais informações, consulte Extensões especializadas.

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

13. Revise recursos adicionais de depuração

Outros recursos incluem os seguintes livros e vídeos:

  • Por dentro da depuração do Windows: Estratégias práticas de depuração e rastreamento por Tarik Soulami
  • Depuração avançada do Windows por Mario Hewardt e Daniel Pravat
  • Defrag Tools, série de vídeos, do episódio 13 ao 29, com tudo sobre o WinDbg

Confira também