Partilhar via


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

Esta secção inclui:

Visão geral do mecanismo de depurador

Usando a API do mecanismo de depurador

Escrevendo extensões DbgEng

Extensões EngExtCpp

Escrevendo 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 do depurador para escrever extensões que serão executadas 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 no modo kernel.

Motor 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 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 escrever bibliotecas de extensão do depurador e aplicativos autônomos. Tais 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 de . 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.

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 extension para exibir uma estrutura de dados complexa.

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

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

  • DLLs de extensão EngExtCpp. Estes 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. Estes 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 a API WdbgExts exclusivamente. 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 pode ser usada apenas por extensões.

Todas as extensões do depurador devem ser compiladas e criadas usando o Visual Studio.

Os 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 SDK do e todos os seus subcomponentes. Eles podem ser encontrados no subdiretório sdk\samples do diretório de instalação das 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 makefile e arquivos de código-fonte para uso com o utilitário Build. Ambos os tipos de extensões são representados nos exemplos.

Escrevendo extensões de depurador de análise personalizada

Você pode estender os recursos do comando !analyze depurador 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 bug ou uma exceção de uma forma específica para seu próprio componente ou aplicativo. Quando você escreve 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 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 JavaScript para criar scripts que entendam os objetos do depurador e estendam e personalizem os recursos do depurador. Os provedores JavaScript fazem a ponte entre uma linguagem de script e 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 JavaScript Debugger Scripting.

Desenvolver módulos de extensibilidade de transporte KDNET

O transporte KDNET pode ser estendido para ser executado em qualquer hardware através do uso de uma dll de módulo de extensibilidade de driver de hardware separada. Os módulos de extensibilidade de transporte KDNET são desenvolvidos por fornecedores de placas de rede para adicionar suporte de depuração do kernel a placas de rede específicas.

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