Fusionado hoy con GNU Debugger (GDB) se encuentra el soporte inicial para Debug Adapter Protocol (DAP), que es una interfaz JSON-RPC para uso de entornos de desarrollo integrados (IDE) para comunicarse mejor con los depuradores.

Microsoft define el Protocolo de adaptador de depuración (DAP) como un protocolo abstracto entre los IDE y los depuradores. Como se explica en la página de GitHub del protocolo:

“La idea detrás de la El Protocolo de adaptador de depuración (DAP) es abstraer la forma en que el soporte de depuración de las herramientas de desarrollo se comunica con los depuradores o los tiempos de ejecución en un protocolo. Dado que no es realista suponer que los depuradores o los tiempos de ejecución existentes adoptarán este protocolo en el corto plazo, preferimos suponer que un El componente intermediario, llamado adaptador de depuración, adapta un depurador existente o tiempo de ejecución al protocolo de adaptador de depuración.

El protocolo de adaptador de depuración hace posible implementar un depurador genérico para una herramienta de desarrollo que puede comunicarse con diferentes depuradores a través de adaptadores de depuración. Y los adaptadores de depuración se pueden reutilizar en múltiples herramientas de desarrollo, lo que reduce significativamente el esfuerzo para admitir un nuevo depurador en diferentes herramientas.

¡El protocolo del adaptador de depuración es una victoria tanto para los proveedores de depuradores como para los proveedores de herramientas!”

El protocolo del adaptador de depuración es ampliamente compatible con el código VS de Microsoft, también hay un servidor DAP , Eclipse tiene algo de soporte DAP, hay algo de soporte DAP integrado en GNU Emacs, y varios otros proyectos tanto para soporte de lenguaje como para entornos de desarrollo se han centrado en este protocolo JSON-RPC. Ahora, hoy, el último código maestro GDB Git también hace DAP.
Esta implementación de DAP se realiza a través de la API de Python del depurador en lugar de una corrección. Con el último código de desarrollo de GDB, el soporte se puede habilitar con gdb-i=dap.

El código DAP aceptará mensajes JSON-RPC en la entrada estándar e imprimirá las respuestas en la salida estándar. GDB redirige la salida estándar del inferior a una nueva tubería para que el protocolo pueda encapsular la salida.

El código de Python utiliza múltiples subprocesos para hacer su trabajo. Se utilizan subprocesos separados para leer JSON del cliente y para escribir JSON en el cliente. Todo el trabajo de GDB se realiza en el hilo principal. (La primera implementación usaba asyncio, pero tenía algunas limitaciones, por lo que la reescribí para usar subprocesos).

Esta no es una implementación completa del protocolo, pero implementa lo suficiente como para demostrar que el el enfoque general funciona.

El GDB El desarrollador Tom Tromey trabajó en la implementación y se encontrará en la próxima versión de GDB.

Categories: IT Info