Foi fundido hoje com o GNU Debugger (GDB) está o suporte inicial para o Debug Adapter Protocol (DAP), que é uma interface JSON-RPC para uso por ambientes de desenvolvimento integrado (IDEs) para melhor comunicação com depuradores.
O Debug Adapter Protocol (DAP) é definido pela Microsoft como um protocolo abstrato entre IDEs e depuradores. Conforme explicado na página protocol's GitHub :
"A ideia por trás do Debug Adapter Protocol (DAP) é abstrair a maneira como o suporte de depuração das ferramentas de desenvolvimento se comunica com depuradores ou tempos de execução em um protocolo. Como não é realista supor que depuradores ou tempos de execução existentes adotem esse protocolo tão cedo, em vez disso, assumimos que um componente intermediário - o chamado Debug Adapter - adapta um depurador ou tempo de execução existente ao Debug Adapter Protocol.
O Debug Adapter Protocol torna possível implementar um depurador genérico para uma ferramenta de desenvolvimento que pode se comunicar com diferentes depuradores via Debug Adaptadores e adaptadores de depuração podem ser reutilizados em várias ferramentas de desenvolvimento, o que reduz significativamente o esforço para oferecer suporte a um novo depurador em diferentes ferramentas.
O Debug Adapter Protocol é uma vitória tanto para provedores de depuradores quanto para fornecedores de ferramentas!"
O Debug Adapter Protocol é amplamente suportado pelo VS Code da Microsoft, há também um servidor DAP, o Eclipse tem algum suporte DAP, há algum suporte DAP integrado ao GNU Emacs e vários outros projetos, tanto para suporte a idiomas quanto para ambientes de desenvolvimento, centrados nisso Protocolo JSON-RPC. Agora, hoje, o código mestre do GDB Git mais recente também faz o DAP.
Essa implementação DAP é feita por meio da API Python do depurador, em vez de um shim. Com o código de desenvolvimento GDB mais recente, o suporte pode ser ativado com gdb -i=dap .
O código DAP aceitará mensagens JSON-RPC em stdin e imprimirá respostas em stdout. O GDB redireciona o stdout inferior para um novo canal para que a saída possa ser encapsulada pelo protocolo.
O código Python usa vários threads para fazer seu trabalho. Threads separados são usados para ler JSON do cliente e para gravar JSON no cliente. Todo o trabalho do GDB é feito no thread principal. (A primeira implementação usava assíncrono, mas tinha algumas limitações, então eu a reescrevi para usar as threads.)
Essa não é uma implementação completa do protocolo, mas implementa o suficiente para demonstrar que a abordagem geral funciona.
A implementação do GDB foi trabalhada pelo desenvolvedor Tom Tromey e será encontrada na próxima versão do GDB.
Até a próxima !!
Nenhum comentário:
Postar um comentário