Introdução ao mecanismo do depurador

Esta documentação descreve como usar o mecanismo do depurador e como escrever extensões que serão executados no WinDbg, KD, CDB e NTSD. Essas extensões do depurador podem ser usadas ao executar a depuração no modo de usuário ou 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, símbolos de consulta, ler e gravar memória e controlar threads e processos em um destino.

Você pode usar o mecanismo do 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 do depurador que usa a funcionalidade completa do mecanismo do depurador é um depurador. Por exemplo, WinDbg, CDB, NTSD e KD são depurdores; o mecanismo do depurador fornece o núcleo de sua funcionalidade.

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

Documentação incompleta

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

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

Para obter algumas das funcionalidades não documentados atualmente 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 do DbgEng. Eles se baseiam nos protótipos no arquivo de header 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 do EngExtCpp. Eles se baseiam nos protótipos nos arquivos de header 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 do EngExtCpp e também podem usar a API WdbgExts.

  • DLLs de extensão WdbgExts. Eles se baseiam nos protótipos no arquivo de título wdbgexts.h. Cada DLL desse tipo exporta um ou mais comandos de extensão WdbgExts. Esses comandos de extensão usam a API WdbgExts exclusivamente.

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 pode ser usada somente por extensões.

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

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 subdiretório sdk\samples das Ferramentas de Depuração para Windows instalação.

A maneira mais fácil de escrever novas extensões do 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.

Escrevendo extensões do depurador de análise personalizada

Você pode estender os recursos do comando depurador !analyze 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 uma verificação de bugs ou de 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 seu 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 de depurador de análise personalizadas

Personalização da saída do depurador usando DML

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

Usando JavaScript para estender as funcionalidades do depurador

Use JavaScript para criar scripts que compreendam objetos do depurador e estendam e personalizem os recursos do depurador. Os provedores JavaScript pontem uma linguagem de script para o modelo de objeto interno do depurador. O provedor de script do depurador JavaScript permite o uso de JavaScript com o depurador. Para obter mais informações, consulte Scripts do depurador JavaScript.