Introdução ao Mecanismo de Depurador

Esta documentação descreve como usar o mecanismo do depurador e como gravar extensões que serão executadas no WinDbg, KD, CDB e NTSD. Essas extensões de depurador podem ser usadas ao executar a depuração do modo de usuário ou do modo kernel no Microsoft Windows.

Mecanismo do depurador

O mecanismo do depurador fornece uma interface para examinar e manipular destinos de depuração no modo de usuário e no modo kernel no Microsoft Windows.

O mecanismo do depurador pode adquirir destinos, definir pontos de interrupção, monitorar eventos, consultar símbolos, ler e gravar memória e controlar threads e processos em um destino.

Você pode usar o mecanismo de depurador para gravar bibliotecas de extensão do depurador e aplicativos autônomos. Esses aplicativos são aplicativos de mecanismo de depurador. Um aplicativo de mecanismo de depurador que usa a funcionalidade completa do mecanismo de depurador é um depurador. Por exemplo, WinDbg, CDB, NTSD e KD são depuradores; o mecanismo do depurador fornece o núcleo de sua funcionalidade.

A API do mecanismo de depurador é especificada pelos protótipos no arquivo de cabeçalho dbgeng.h.

Documentação incompleta

Este é um documento preliminar e está incompleto no momento.

Para muitos conceitos relacionados aos depuradores e ao mecanismo do depurador que ainda não estão documentados aqui, consulte a seção Técnicas de Depuração desta documentação.

Para obter algumas das funcionalidades atualmente não documentadas da API do mecanismo de depurador, use o método Execute para executar comandos individuais do depurador.

Extensões

Você pode criar seus próprios comandos de depuração escrevendo e criando uma DLL de extensão. Por exemplo, talvez você queira escrever um comando de extensão para exibir uma estrutura de dados complexa.

Há três tipos diferentes de DLLs de extensão do depurador:

  • DLLs de extensão DbgEng. Eles são baseados nos protótipos no arquivo de cabeçalho dbgeng.h. Cada DLL desse tipo pode exportar comandos de extensão DbgEng. Esses comandos de extensão usam a API do Mecanismo de Depurador e também podem usar a API WdbgExts.

  • DLLs de extensão EngExtCpp. Eles são baseados nos protótipos nos arquivos de cabeçalho engextcpp.h e dbgeng.h. Cada DLL desse tipo pode exportar comandos de extensão DbgEng. Esses comandos de extensão usam a API do Mecanismo de Depurador e a estrutura de extensão EngExtCpp e também podem usar a API WdbgExts.

  • DLLs de extensão WdbgExts. Eles são baseados nos protótipos no arquivo de cabeçalho wdbgexts.h. Cada DLL desse tipo exporta um ou mais comandos de extensão WdbgExts. Esses comandos de extensão usam exclusivamente a API WdbgExts.

A API DbgEng pode ser usada para criar extensões ou aplicativos autônomos. A API WdbgExts contém um subconjunto da funcionalidade da API do mecanismo de depurador e só pode ser usada por extensões.

Todas as extensões do depurador devem ser compiladas e criadas usando o utilitário Build. O utilitário Build está incluído no WDK (Kit de Driver do Windows).

Os exemplos de código de extensão serão instalados como parte do pacote ferramentas de depuração para Windows se você executar uma instalação personalizada e selecionar o componente do SDK e todos os seus subcomponentes. Eles podem ser encontrados no subdk\samples subdiretório do diretório de instalação ferramentas de depuração para Windows.

A maneira mais fácil de escrever novas extensões de depurador é estudar as extensões de exemplo. Cada extensão de exemplo inclui arquivos makefile e sources para uso com o utilitário Build. Ambos os tipos de extensões são representados nos exemplos.

Gravando extensões do depurador de análise personalizada

Você pode estender os recursos do comando !analyze debugger escrevendo um plug-in de extensão de análise. Ao fornecer um plug-in de extensão de análise, você pode participar da análise de um marcar de bugs ou uma exceção de uma maneira específica para seu próprio componente ou aplicativo. Ao escrever um plug-in de extensão de análise, você também escreve um arquivo de metadados que descreve as situações para as quais você deseja que o plug-in seja chamado. Quando !analyze é executado, ele localiza, carrega e executa os plug-ins de extensão de análise apropriados. Para obter mais informações, consulte Escrevendo extensões do depurador de análise personalizada

Personalizando a saída do depurador usando DML

Você pode personalizar a saída do depurador usando DML. Para obter mais informações, consulte Personalizando a saída do depurador usando DML.

Usando JavaScript para estender os recursos do depurador

Use o JavaScript para criar scripts que entendam os objetos do depurador e estenda e personalize os recursos do depurador. Os provedores JavaScript associam uma linguagem de script ao modelo de objeto interno do depurador. O provedor de scripts do depurador JavaScript permite o uso de JavaScript com o depurador. Para obter mais informações, consulte Scripts do Depurador JavaScript.