Compartilhar via


APIs de extensão de programação do depurador

Esta seção inclui:

Visão geral do mecanismo de depurador

Usando a API do Mecanismo de Depurador

Escrevendo extensões DbgEng

Extensões do EngExtCpp

Gravando extensões WdbgExts

Personalizando a saída do depurador usando DML

Usando JavaScript para estender os recursos do depurador

Desenvolver módulos de extensibilidade de transporte KDNET

Esta documentação descreve como usar interfaces como as fornecidas pelo mecanismo de depurador para gravar extensões que serão executadas em 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.

Mecanismo de depurador

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

O mecanismo de 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 de 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 de 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.

Para obter mais informações, consulte Visão geral do mecanismo de depurador e Usando a API do Mecanismo de 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 de 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.

    Para obter mais informações, consulte Escrevendo extensões DbgEng.

  • 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. Para obter mais informações, consulte Escrevendo extensões 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 Visual Studio.

Exemplos de código de extensão sã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 subdk 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 de 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 um bug marcar 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 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 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 integram 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.

Desenvolver módulos de extensibilidade de transporte KDNET

O transporte KDNET pode ser estendido para ser executado em qualquer hardware por meio do uso de um módulo de extensibilidade de driver de hardware separado dll. Os módulos de extensibilidade de transporte KDNET são desenvolvidos por fornecedores de cartão de rede para adicionar suporte à depuração de kernel a cartões de rede específicos.

KDNET é um transporte de depuração de kernel que permite a depuração de kernel de janelas em uma rede. Ele foi projetado para que a camada de suporte de hardware seja incorporada a um módulo separado da camada de processamento de pacotes de rede e da interface do kernel. Essa camada de suporte do driver de hardware é chamada de módulo de extensibilidade KDNET. Para obter mais informações, consulte Desenvolver módulos de extensibilidade de transporte KDNET.